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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
правила_разработки:как_не_надо_делать:2020-06-16_не_правильное_использование_tail_и_grep [16.06.2020 10:03]
александр_хромлюк
правила_разработки:как_не_надо_делать:2020-06-16_не_правильное_использование_tail_и_grep [22.06.2020 05:22] (текущий)
nikolay_carbonsoft Approved(nikolay_carbonsoft 22.06.2020 05:22)
Строка 1: Строка 1:
-Был написан скрипт, который грепает трейсбеки ​из последних 2к строк логах:\\+~~META: 
 +user = nikolay_carbonsoft 
 +~~ 
 +**Ошибка**: скрипт ​постоянно находит трейсбеки ​в логах, даже исправленные.
  
-**Как не надо делать**:​\\ +**Как не надо делать**: ​Был написан скрипт,​ который грепает трейсбеки из последних 2к строк логах: 
-<code bash>\\ +<code bash> 
-if grep -q "​Traceback"​ <<<​ "​$(tail -n 2000 $LOGS_DIR/​$logfile)";​ then\\+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>​
- 
-После исправления всех трейсов,​ греп всё равно выдавал наличие трейсбеков в файлах. 
  
 **Как надо делать**:​ скрипт должен сохранять последную проверенную строчку в файл, чтобы при повторной проверке сбрасывать счетчик трейсбеков,​ если дойдёт до предыдущей проверенной строки:​\\ **Как надо делать**:​ скрипт должен сохранять последную проверенную строчку в файл, чтобы при повторной проверке сбрасывать счетчик трейсбеков,​ если дойдёт до предыдущей проверенной строки:​\\
-<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>​