Chun-Jie Liu

Schedule process on linux

Chun-Jie Liu · 2019-09-17

Scheduling tasks #

Automating system maintenance and administration of web server save my life for managing our web server. Scheduling certain tasks to run periodically or one time to backup data and start/stop server at certain time. crontab and at are to service processes to fulfill the requirement of a server manager.

Run periodically crontab #

Time format

The above picture is the crontab rule to schedule periodically tasks. Following code is an example to check MySQL status every five minutes.

# add in crontab
# crontab -e with root
*/5 * * * * /etc/mysql/listen.sh

Following code is listen.sh

#!/bin/bash
#apache
HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "http://example.com"`
if [ $HTTP_CODE != 200 ]; then
    echo $HTTP_CODE>> /var/log/mysql_listen.log
    service apache2 start
else
    echo "lab server running">> /var/log/mysql_listen.log
fi

#mysql
pgrep mysqld &> /dev/null
if [ $? -gt 0 ]; then
    echo "`date` mysql is stop">> /var/log/mysql_listen.log
    service mysql start
else
    echo "`date` mysql running">> /var/log/mysql_listen.log
fi

#mongodb
netstat -anop | grep localhost:port
if [ $? -ne 1 ]; then
    echo "`date` mongodb running">> /var/log/mongodb_listen.log
else
    echo $(date +%T%n%F)" Restart mongodb Services " >> /var/log/mongodb_listen.log
    service mongod restart
fi

Run one time task at #

Schedule certain time to start/stop apache service.

# schedule one time process for stop apache2 at 06:00 2019-09-18
echo "/usr/sbin/service apache2 stop" | at -m 06:00 2019-09-18
# schedule one time process for start apache2 at 14:00 2019-09-20
echo "/usr/sbin/service apache2 start" | at -m 14:00 2019-09-20