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
#
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