Локальный мониторинг процессов
Иногда возникает необходимость осуществлять мониторинг сервиса не только удаленно, но и локально. Ну, например, автоматически перезапускать падающий время от времени сервис. Такие задачи очень удобно писать на shell:
#!/bin/sh # Service checker by Pavel Titov PIDFILE=/var/run/proftpd.pid RESTART=proftpd if [ ! -f $PIDFILE ] then echo Pidfile $PIDFILE not exists, restarting $RESTART exit fi PID=`cat $PIDFILE` if ! kill -0 $PID then echo Process looks dead, restarting $RESTART fi
Этот скрипт проверяет наличие PID-файла в указанном в переменной PIDFILE месте и, если он есть, пытается убедиться что процесс запущен. Если это не удалось, процесс перезапускается командой из RESTART.
В RESTART лучше указать команды для очистки всего, что могло остататься за упавшим процессом, например, процессов-детей. Как-то так: killall proftpd && sleep 10; killall -9 proftpd && sleep 5; proftpd. Приведенный пример пытается штатно завершить работу всех процессов proftpd сигналом TERM, затем, если это не удалось, пытается убить их сигналом KILL, и лишь после этого перезапускает сервис.
0 TrackBacks
Listed below are links to blogs that reference this entry: Локальный мониторинг процессов.
TrackBack URL for this entry: http://www.ptitov.ru/mt/mt-tb.cgi/17

Leave a comment