cron job to start a service?

Posted on 2013-07-01
Medium Priority
Last Modified: 2013-07-03
Hello, I am looking for a cron job script that can run every 1 minute to check if  a service is running on my linux box. If the service is running the script does nothing but if the service is not running the script should activate another script to start the service? Can someone help me with this? Thank you.
Question by:aej1973
  • 4
  • 2
  • 2
  • +2
LVL 14

Expert Comment

ID: 39292007
My first suggestion is to fix whatever is causing your service to stop running. Services are designed to be running all the time. Instead of merely restarting the service, it would be better to fix the underlying problem.

However, the following script answers your question:

if [ "`/bin/ps -ef | grep "your_script_name" | grep -v "grep"`" = "" ]; then
  echo NOT Running!

Since cron jobs are 1-liners, change each statement line to end with a semicolon, and remove the hard returns to get this cron entry:

if [ "`/bin/ps -ef | grep "your_script_name" | grep -v "grep"`" = "" ]; then  echo NOT Running!; fi

Obviously, you will need to change your_script_name and replace the echo statement with the command to start services for your distro (the command is different for different distros.)
LVL 48

Expert Comment

ID: 39292027
You should look into defining an /etc/inittab entry for the service.

Author Comment

ID: 39292030
Tintin, how do I do that?
Vote for the Most Valuable Expert

It’s time to recognize experts that go above and beyond with helpful solutions and engagement on site. Choose from the top experts in the Hall of Fame or on the right rail of your favorite topic page. Look for the blue “Nominate” button on their profile to vote.

LVL 48

Expert Comment

ID: 39292054
Assuming /etc/inittab exists on your system (not installed by default on some Linux distros), add an entry like:



zz is a 2 character reference (you can make this anything unique)
3 is the run level the entry is valid for
respawn means restart the command if it dies


init q

will force the init process to reexamine /etc/initab to pick up the new entry.

Note that using this process won't give you any control as to manually stopping/starting the daemon, which may, or may not be important to you.
LVL 40

Assisted Solution

omarfarid earned 400 total points
ID: 39292119
the solution given by tintin is good but if /path/to/service is a script that run another process and exit then it may not work.

what you could do is:

- run the monitoring script as an inittab entry as given by tintin, and let the script loop:

while true
   grep processname | grep -v grep
   if [ $? -ne 0 ]
       put your command to restart the process
   sleep 60
LVL 27

Accepted Solution

skullnobrains earned 1600 total points
ID: 39292166
ps -p `cat /var/run/myservice.pid` >/dev/null || /etc/rc.d/service_name start

you'll get an email everytime the service is started

if you're using an os where services provide status commands, you can use that instead of looking for a pid. on linux, you usually do not have status, but your rc scripts use startstopcmd that can be queried for the status


if you're not really monitoring a service an want a pseudo-daemon, try this

flock -w 60 /var/run/mylock.lock -c "YOUR COMMAND HERE"

this command will restart the process as soon as it dies at most once per minute. if you want it to work more than once per minute, you can use more than 60 for the wait time


or a combination

flock -w 60 /tmp/mylock.lock -c "while sleep 0.1 ; do ! ps -p 11565 >/dev/null && echo restarting myservice && RESTART COMMAND && break ; done"

this will restart the given process at most once per minute, send a warning email when it does. make sure whatever script you use does not provide output when it does not restart anything or cron will have to store that output

Author Comment

ID: 39294097
skullnobrains, so if I run this cron job every 5 minutes this is how it is going to look?

*/5 * * * * ps -p `cat /var/run/myservice.pid` >/dev/null || /etc/rc.d/service_name start

Thank you,

Author Comment

ID: 39294100
Also, how do I check to make sure my cron is running every 5  mins?
LVL 27

Expert Comment

ID: 39296809
yes it would look like this.
check that the path is set properly or use the complet path to ps (likely /bin/ps)

if cron runs, it will run.

you can stop the sevice and wait. pretty much tests the whole thing.

cron should also send you a mail when there is output, so you'll receive a mail each time with the output (ie when it does restart the service). you can remove the redirection into /dev/null if you want a mail every time

you can also add some logging to it. try something like this

*/5 * * * * date >>/var/log/myservice.mon.log ; ps -p `cat /var/run/myservice.pid` >>/var/log/myservice.mon.log || /etc/rc.d/service_name start 2>&1 >>/var/log/myservice.mon.log

if your monitoring script becomes too complicated to be a one-liner, you had better stick it in a file and run the file from cron

Author Closing Comment

ID: 39296854
Thank you.

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The following is a collection of cases for strange behaviour when using advanced techniques in DOS batch files. You should have some basic experience in batch "programming", as I'm assuming some knowledge and not further explain the basics. For some…
Background Still having to process all these year-end "csv" files received from all these sources (including Government entities), sometimes we have the need to examine the contents due to data error, etc... As a "Unix" shop, our only readily …
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…
Suggested Courses

864 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question