Linux上有一些服务或进程偶尔会意外退出,需要一个能实时监控的功能。以下是监控 mysqld 和 httpd 这两个服务进程,每隔 20 秒检查一次 mysqld 和 httpd,如果服务进程不存在则启动。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/bin/bash while [ "1" = "1" ] do PIDS=`ps -ef |grep mysqld |grep -v grep | awk '{print $2}'` if [ "$PIDS" != "" ]; then echo "mysqld is runing!" else echo "mysql restart" service mysqld restart fi PIDS=`ps -ef |grep httpd |grep -v grep | awk '{print $2}'` if [ "$PIDS" != "" ]; then echo "httpd is runing!" else echo "httpd restart" service httpd restart fi sleep 20 done |
执行脚本
nohup /root/check_service.sh &
如果不想 nohup.out 的日志太多,可以去掉脚本里的 echo 输出,不然每隔 20 秒写一次日志,时间久了日志文件会很大。
转载请注明:exchen's blog » Linux shell 脚本检查服务进程