Локальный мониторинг процессов

| | Comments (0) | TrackBacks (0)

Иногда возникает необходимость осуществлять мониторинг сервиса не только удаленно, но и локально. Ну, например, автоматически перезапускать падающий время от времени сервис. Такие задачи очень удобно писать на 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

About this Entry

This page contains a single entry by Pavel Titov published on November 3, 2007 10:22 PM.

FreeBSD и ZFS was the previous entry in this blog.

Xen на amd64 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.01

Страницы