Search code examples
phppythonbashcrondaemon

How to check if a daemon service is running via Cron job or script?


How can I set up a cron job to monitor multiple PIs (via SSH) that are running the same daemon script (service)?

I was thinking of using a cron job to monitor the service status and write to a file on my server if the status of the service is active or inactive, and then I can later use the contents of that file to display the results of the Cron job onto a web page (but that is for me to figure out later).

I'm open to other options if someone can figure out an easier way using a different tool, E.g. bash script, python script, PHP etc,


Solution

  • Regarding your question

    How to check if a daemon service is running

    in RHEL/CentOS v4.x/5.x/6.x and Fedora Linux (older version) Verify Cron Service You can simply use any one of the following command to see if crond is running or not, enter:

    $ pgrep crond
    

    OR

    $ service crond status
    

    Sample outputs:

    # crond (pid 4370) is running...
    

    If it is not running type the following two command to start crond:

    $ chkconfig crond on
    $ service crond start
    

    Verify cron is running by viewing log file, enter:

    $ tail -f /var/log/cron
    

    A note about CentOS/RHEL v7.x+ and latest version of Fedora Linux You need to use the following command to find out if the crond is running or not:

    $ systemctl status crond.service
    

    Sample outputs:

    Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
       Active: active (running) since Tue 2015-05-19 14:53:32 EDT; 3min 7s ago
     Main PID: 1292 (crond)
       CGroup: /system.slice/crond.service
               └─1292 /usr/sbin/crond -n
    

    If not running configure the crond service to start automatically on boot:

    $ sudo systemctl enable crond.service
    $ sudo systemctl start crond.service
    

    A note about Debian / Ubuntu Linux (older version) Cron service On a Debian and Ubuntu Linux cron logs its action logged to the syslog facility i.e. use /var/log/messages file:

    $ tail -f /var/log/messages
    

    Find out if cron daemon is running or not, enter:

    $ pgrep cron
    

    If not running start it, enter:

    $ update-rc.d cron defaults
    $ /etc/init.d/cron start
    

    A note about Debian Linux v8.x+ and latest version of Ubuntu Linux The syntax is as follows to check if the cron service is running or not:

    # systemctl status cron
    

    Sample outputs:

    â— cron.service - Regular background program processing daemon
       Loaded: loaded (/lib/systemd/system/cron.service; enabled)
       Active: active (running) since Tue 2015-05-19 11:49:32 IST; 12h ago
         Docs: man:cron(8)
     Main PID: 1053 (cron)
       CGroup: /system.slice/cron.service
               ├─1053 /usr/sbin/cron -f
               └─3020 /usr/bin/atop -a -w /var/log/atop/atop_20150520 600
    

    If not running configure the crond service to start automatically on boot:

    $ sudo systemctl enable cron.service
    $ sudo systemctl start cron.service