Хорошо, я знаком с несколькими методами реализации скрипта "сторожевого пса". Проблема в том, что ни один из них не проверяет "зависший" или неотвечающий процесс. Все они просто проверяют, присутствует ли процесс.
Возможно, я показываю свой недостаток знаний в программировании, но у меня сложилось впечатление, что процесс иногда может продолжать казаться запущенным для этой системы, но на самом деле быть разрушенным/зависшим.
Есть ли способ обнаружить это состояние и запустить (pkill blah && blah
) соответствующий процесс?
Некоторые примеры того, что я НЕ ищу:
задания cron типа:
#!/bin/sh
if [ `` pgrep processname -c` -le "0" ]; then processname
Посмотрите на утилиту Monit или M / Mmonit .
Ее использование хорошо описано здесь, в Server Fault , а также в примерах документации .
Вы можете легко проверить процесс по PID или присутствию; но дополнительные параметры, такие как использование ЦП или потребление ОЗУ, также могут быть триггерами для множества действий.