2020-06-16 Не Правильное Использование Tail И Grep
Ошибка: скрипт постоянно находит трейсбеки в логах, даже исправленные.
Как не надо делать: Был написан скрипт, который грепает трейсбеки из последних 2к строк логах:
if grep -q "Traceback" <<< "$(tail -n 2000 $LOGS_DIR/$logfile)"; then traceback_count="$(tail -n 1500 "$DIG_DIR/$logfile" | grep Traceback | wc -l)" fi
Как надо делать: скрипт должен сохранять последную проверенную строчку в файл, чтобы при повторной проверке сбрасывать счетчик трейсбеков, если дойдёт до предыдущей проверенной строки:
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"
~~OWNERAPPROVE~~
Прочитал правила разработки как не надо делать 2020-06-16 не правильное использование tail и grep |
Обсуждение
А не возникнет ситуации, когда скрипт примет две одинаковых строки за одну и ту же?