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

Различия

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

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

Следующая версия
Предыдущая версия
правила_разработки:как_не_надо_делать:2020-06-16_не_правильное_использование_tail_и_grep [16.06.2020 09:59]
александр_хромлюк создано
правила_разработки:как_не_надо_делать:2020-06-16_не_правильное_использование_tail_и_grep [22.06.2020 05:22] (текущий)
nikolay_carbonsoft Approved(nikolay_carbonsoft 22.06.2020 05:22)
Строка 1: Строка 1:
 +~~META:
 +user = nikolay_carbonsoft
 +~~
 +**Ошибка**:​ скрипт постоянно находит трейсбеки в логах, даже исправленные.
 +
 +**Как не надо делать**:​ Был написан скрипт,​ который грепает трейсбеки из последних 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>
 +if [ -f "​$last_job_filename"​ ]; then
 +   ​last_job="​$(cat "​$last_job_filename"​)"​
 +fi
 +
 +while read -r row; do
 +   if grep -q "​Traceback"​ <<<​ "​$row";​ then
 +       ​traceback_count=$((traceback_count+1))
 +   fi
 +
 +   if [ "​$last_job"​ = "​$row"​ ]; then
 +       ​traceback_count=0
 +   fi\\
 +done < <(tail -n 2000 "​$LOGS_DIR/​$logfile"​)
 +
 +tail -n 1 "​$LOGS_DIR/​$logfile"​ > "​$last_job_filename"​
 +</​code>​
 +
 +~~OWNERAPPROVE~~ /*Не удаляйте эту строку и ниже!*/
 +
 +{(rater>​id=1|name=Прочитал_правила_разработки:​как_не_надо_делать:​2020-06-16_не_правильное_использование_tail_и_grep|type=vote|trace=user|tracedetails=1)}
 +