This script is to check if a service is running. If not, restart it and send an email.
First of make a file and give it “execute” permission:
touch check_service.sh
chmod +x check_service.sh
Now edit the file with the following script:
#!/bin/bash
### edit the following ###
service=service_name
[email protected]
### stop editing ###
host=`hostname -f`
if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 ))
then
echo "$service is running"
else
/etc/init.d/$service restart
if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 ))
then
subject="$service at $host has been started"
echo "$service at $host wasn't running and has been started" | mail -s "$subject" $email
else
subject="$service at $host is not running"
echo "$service at $host is stopped and cannot be started!!!" | mail -s "$subject" $email
fi
fi
The go ahead and create a Cron job to run periodically (you can use this to simplify your life: cron.help).
This is an example to run this script every day at 01:00:
0 1 * * * /home/username/scripts/check_service.sh