Simple service watchdog

Posted on the January 15th, 2008 under IT, Linux by Konrad Żak

Recently I got some trouble with saslauthd unexpectly dying. Despite strong will to discover cause of problems I needed badly some kind of watchdog bringing dead service back to life. Yes, there is still inittab respawn at your disposal, but it has some major drawbacks.

Consider this simple shell script:

#!/bin/sh
# give the $4 service $1 seconds to start
sleep $1
# then every $2 seconds check if it's running by looking
# for $3 string in the list of processes...
# and if it's not running restart the $4 service
while true; do if [[ ! `ps -efw |grep -v grep |grep -v $0 |grep $3|awk '{print $2}'` ]]; then service $4 restart > /dev/null 2>&1;fi;sleep $2;done

It’s expected to run from /etc/rc.local like that:

/usr/local/bin/watchdog 60 60 saslauthd saslauthd&

2 Responses to 'Simple service watchdog'

Leave a Reply

You must be logged in to post a comment.