2020-06-16 Не Правильное Использование Tail И Grep

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
правила_разработки:как_не_надо_делать:2020-06-16_не_правильное_использование_tail_и_grep [16.06.2020 10:03]
александр_хромлюк
правила_разработки:как_не_надо_делать:2020-06-16_не_правильное_использование_tail_и_grep [16.06.2020 10:10]
александр_хромлюк
Строка 1: Строка 1:
-Был написан скрипт,​ который грепает трейсбеки из последних 2к строк логах:​\\ 
  
-**Как не надо делать**:\\ +**Ошибка**: скрипт постоянно находит трейсбеки в логах, даже исправленные.
-<code bash>​\\ +
-if grep -q "​Traceback"​ <<<​ "​$(tail -n 2000 $LOGS_DIR/​$logfile)";​ then\\ +
-</​code>​+
  
-После исправления всех трейсов, ​греп ​всё равно выдавал наличие трейсбеков в файлах.+**Как не надо делать**: Был написан скрипт, который грепает трейсбеки из последних 2к строк логах
 +<code bash> 
 +if grep -q "​Traceback"​ <<<​ "​$(tail -n 2000 $LOGS_DIR/​$logfile)";​ then 
 +   ​traceback_count="​$(tail -n 1500 "​$DIG_DIR/​$logfile"​ | grep Traceback ​ | wc -l)" 
 +fi 
 +</​code>​
  
 **Как надо делать**:​ скрипт должен сохранять последную проверенную строчку в файл, чтобы при повторной проверке сбрасывать счетчик трейсбеков,​ если дойдёт до предыдущей проверенной строки:​\\ **Как надо делать**:​ скрипт должен сохранять последную проверенную строчку в файл, чтобы при повторной проверке сбрасывать счетчик трейсбеков,​ если дойдёт до предыдущей проверенной строки:​\\
-<code bash>\\ +<code bash> 
-if [ -f "​$last_job_filename"​ ]; then\\ +if [ -f "​$last_job_filename"​ ]; then 
-   ​last_job="​$(cat "​$last_job_filename"​)"​\\+   ​last_job="​$(cat "​$last_job_filename"​)"​
 fi fi
  
-while read -r row; do\\ +while read -r row; do 
-   if grep -q "​Traceback"​ <<<​ "​$row";​ then\\ +   if grep -q "​Traceback"​ <<<​ "​$row";​ then 
-       ​traceback_count=$((traceback_count+1))\\+       ​traceback_count=$((traceback_count+1))
    fi    fi
  
-   if [ "​$last_job"​ = "​$row"​ ]; then\\ +   if [ "​$last_job"​ = "​$row"​ ]; then 
-       ​traceback_count=0\\+       ​traceback_count=0
    fi\\    fi\\
 done < <(tail -n 2000 "​$LOGS_DIR/​$logfile"​) done < <(tail -n 2000 "​$LOGS_DIR/​$logfile"​)
  
-tail -n 1 "​$LOGS_DIR/​$logfile"​ > "​$last_job_filename"​\\+tail -n 1 "​$LOGS_DIR/​$logfile"​ > "​$last_job_filename"​
 </​code>​ </​code>​