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> | ||