Цикл в bash на проверку файла на наличие строки и вывод сообщения?
Нужен скипт, чтобы постоянно залезать в файл последнего лога (в папке несколько логов, логи генерируются по дате и времени в формате на подобие: 03-06_22-57-25_Ser.log ) проверять содержимое на наличие строки содержащей в себе "Инициализация сервера завершена", а когда появится такая строка выполнить выдачу сообщения "Привет".
Как-то это странно. А по какому принципу программа решает, что пора создавать новый файл? Размер или событие? И да, насколько оперативно должен реагировать скрипт: сию секунду или может подождать полчаса-час?
ls -1tr | tail -1
Это даст тебе имя последнего обновлённого файла в текущей папке. Если в этой папке лежат только нужные тебе логи, то это будет как раз последний файл логов.
erohin_d: кстати, а тебя не смущает тот факт, что это "одноразовый" скрипт? После обнаружения нужной строк он выведет "Сервер запущен" и умрёт. То есть если в логах снова появится запись об инициализации сервера, ты об этом не узнаешь.
1. Лог большой и растет, строчек там много, но строчка содержащая "Инициализация сервера завершена", там только одна.
2. Каким образом мне закольцевать if?
Просто с его помощью я пробовал (правда с указанием того, что лог последний пока пробел)
tim=`date +%m-%d_%H`
if grep -q "Инициализация сервера завершена" /log/$tim*
then echo "Привет"
fi
3. Зачем лога то пример, можно же через grep поискать строку по содержимому? и не важно что-то там еще есть внутри.