Приведу пример простого скрипта для перезапуска сервисов если они не запущены и отправки уведомления на email:
#!/bin/bash
SERVICES="ssh apache2 zabbix-server zabbix-agent mysql smbd nmbd asterisk"
DATE=$(date '+%d-%m-%Y %H:%M:%S')
for SERVICE in ${SERVICES}
do
service $SERVICE status 2>&1>/dev/null
if [ $? -ne 0 ];
then
service $SERVICE stop
sleep 3
service $SERVICE start
echo -e "Starting $SERVICE"
(echo "Subject:Restarting $SERVICE"; echo "$DATE $SERVICE is not running on $HOSTNAME! Restarting!";) | sendmail test@ixnfo.com
else
echo -e "$SERVICE OK"
fi
done
В скрипте укажем email на который хотите получать уведомления, а в «SERVICES» список сервисов через пробел, которые необходимо проверять.
Я сделал сначала остановку сервиса, чтоб наверняка остановить все возможные процессы, паузу 3 секунды и потом запуск, потому как при команде restart некоторые высоконагруженные сервисы могли не корректно запускаться и висеть со статусом «active (exited)».
Чтобы скрипт автоматически выполнялся например каждые 10 минут, добавим строку в /etc/crontab:
*/10 * * * * root /dir/watchdog.sh > /dev/null 2>&1
Смотрите также мои статьи:
Установка и настройка Postfix
Использование и настройка CRON
Установка и настройка Monit