Как активно grep log за последние 15 секунд для фразы?

У меня есть сценарий bash и внутри скрипта, я пытаюсь grep log для слов «изменение статуса», а затем после того, как я нахожу последнюю строку, содержащую слова «изменение статуса» (также известное как изменение статуса) Я готовлю эту строку для слова «Резервное копирование».

Проблема в том, что я в настоящее время укладываю его в спящий режим в течение 15 секунд, поэтому в журнале есть время для обновления самого последнего изменения статуса, но я хочу лучше для этого.

Я хочу, чтобы он активно проверял статус и сообщал о сбое только через 15 секунд. Если возможно, я хотел бы заменить только первые две строки кода, потому что планирую сделать другие изменения для остальных. Любая помощь будет принята с благодарностью! Вот что я сейчас имею:

sleep 15 ssh server_one@$1 "grep 'status change' /apps/tests/$2 | tail -1 | grep 'Backup'" Output=$? if [[ ${Output} -ne 1 ]] ; then echo "Pass: It is Backup" echo "Pass: It is Backup" >> $REPORT else echo "Fail: It is not Backup" echo "Fail: It is not Backup" >> $REPORT fi 

One Solution collect form web for “Как активно grep log за последние 15 секунд для фразы?”

Ответ, предназначенный для оригинальной версии вопроса

Для вашей одной команды, заменив команды grep-tail-grep-if, попробуйте:

 awk '/status change/{last=$0} END{printf "It is %sBackup\n",(last~/Active/?"":"not ")}' "/apps/tests/$2" 

Как это работает:

  • /status change/{last=$0}

    Каждый раз, когда строка, содержащая status change найдена, она сохраняется в переменной last .

  • END{printf "It is %sBackup\n",(last~/Active/?"":"not ")}

    Это выполняется после того, как мы закончили читать файл. В это время last будет содержать содержимое последней строки, содержащей status change . Если эта строка также содержит Active , мы печатаем It is Backup . В противном случае мы печатаем « It is not Backup .

    Наличие или отсутствие слова not контролируется несколько сложным трехмерным утверждением: (last~/Active/?"":"not ") . Этот оператор просто проверяет, является ли last~/Active/ истинным (это означает, что последняя строка содержит Active ). Если это так, трёхмерный оператор возвращает пустую строку "" . Если это не так, оно возвращает строку "not " .

Непрерывный мониторинг

Постоянно контролировать:

 ssh "server_one@$1" tail -f "/apps/tests/$2" | awk '/status change/{printf "It is %sBackup\n",($0~/Backup/?"":"not ")}' 
  • Как сделать «хвост -f» файлов с чередованием логов?
  • Будет ли «хвост -100»? sed -n 1p "читать только одну строку?
  • Получение переходного PID из входа в поиск PS до его смерти
  • разделение CSV и сохранение заголовка без промежуточных файлов
  • Как я могу напечатать вторую в последнюю строку множество файлов в один файл?
  • Как извлечь первую и последнюю строки в файле?
  • Можно ли «перевернуть» символическую ссылку на новый файл, не затрагивая никаких открытых дескрипторов файлов?
  • Как следить и искать в файле, проходящем через фильтр, менее
  • любой способ объединить grep и tail для создания таблицы таблицы из командной строки
  • Tail -f передается через grep, не выводящий в файл, но выводит на консоль
  • Преобразование строк новой строки в нуль-ограничение при использовании хвоста
  • Linux и Unix - лучшая ОС в мире.