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

2020-06-16_не_правильное_использование_tail_и_grep.1592316236.txt.gz | Хозяин: nikolay_carbonsoft | Изменен: 16.06.2020 10:03 александр_хромлюк Черновик Новейший утвержденный

Это старая версия документа.


Был написан скрипт, который грепает трейсбеки из последних 2к строк логах:

Как не надо делать:

\\
if grep -q "Traceback" <<< "$(tail -n 2000 $LOGS_DIR/$logfile)"; then\\

После исправления всех трейсов, греп всё равно выдавал наличие трейсбеков в файлах.

Как надо делать: скрипт должен сохранять последную проверенную строчку в файл, чтобы при повторной проверке сбрасывать счетчик трейсбеков, если дойдёт до предыдущей проверенной строки:

\\
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
Yes(3) No(1) Clear

Yes:
Александр Хромлюк, Nikolay Carbonsoft, Наумов Михаил,

No:
,

a.polukhina.polukhin, 16.07.2020 08:17

А не возникнет ситуации, когда скрипт примет две одинаковых строки за одну и ту же?

Ваш комментарий. Вики-синтаксис разрешён: