Post

Linux - Check Services

This script is to check if a service is running. If not, restarts the service and send an email to a specific recipient.

Preparing the script

First of make an executable bash script:

1
2
touch check_service.sh
chmod +x check_service.sh

Now edit the file with the following script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 #!/bin/bash
 
 #---- edit the following ----#
 service="service_name"
 email="[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

Scheduling

The go ahead and create a cron job to run periodically.

You can use the following site to quickly configure a cronjob: cron.help.

This is an example to run this script every day at 01:00:

1
0 1 * * * /home/harry.vasanth/scripts/check_service.sh
This post is licensed under CC BY 4.0 by the author.