У меня есть скрипт, который отслеживает файл журнала для ключевого слова.Как только он обнаружит ключевое слово, он выполнит функцию (отправит электронное письмо с сообщением о том, что сервер выключен / включен).
* отредактировано. Теперь я хочу, чтобы скрипт сообщал о статусе выключения, а затем попытался перезапустить сервер, вызвавсценарий.
Проблема в том, что ключевое слово, за которым я наблюдаю, может происходить, когда сеть занята или перегружена.Это случается не часто, а когда это происходит, это ненадолго, и это не обязательно означает, что сервер не работает.Короче говоря, я пытаюсь устранить или иным образом уменьшить количество ложных отчетов.
Я думаю, что мой лучший подход - использовать скрипт:
- отслеживать ключевое слово "сервер отключен" (уже всценарий)
- обнаружение ключевого слова (уже в сценарии)
- пауза на заданный период времени.Скажем, может быть, 5 сек. Пауза - дать серверу полностью отключиться перед попыткой перезапуска.
- сообщить о состоянии "сервер выключен" (уже в сценарии)
- Выполнить команду, которая запускает(restart.sh) скрипт
- отслеживает ключевое слово "сервер вверх" (уже в скрипте)
- обнаруживает состояние "сервер включен" (уже в скрипте)
- отчет "состояние сервера "вверх" (уже в скрипте)
Так что, я полагаю, достаточно просто сделать паузу после обнаружения состояния down перед вызовом сценария restart.sh
Вот что у меня естьв моем скрипте до сих пор:
tail -fn0 /var/log/user | /usr/bin/gawk '
/disconnect_tcp_conn/ { report("down") }
/daemon apps started/ { report("up") }
function report(curr_state, msg) {
if ( prev_state != curr_state ) {
msg = "%m/%d/%Y %H:%M:%S Server is " curr_state
system("mail -s \047" msg "\047 mail@gmail.com </dev/null")
print msg | "cat>&2"
print strftime(msg) | "tee -a \047/var/log/server_mon.txt\047 >&2"
prev_state = curr_state
}
}
Так что я думаю, что достаточно просто сделать паузу после сообщения о состоянии down перед вызовом сценария restart.sh и следующим ожиданием состояния up перед отчетом.если никогда не произойдет, у меня все равно будет уведомление от оригинала вниз.
Любая помощь будет отличной.Спасибо