一个检查系统进程的shell脚本
原单位同事让我给他写个检查系统进程的脚本,做到定时检查,如果发现进程不在则重新启动服务
#!/bin/sh
#check_ps.sh #脚本名称
T_begin=`date +%Y-%m-%d %H:%M:%S` #记录脚本开始时间
echo “检测开始…”
echo “本次检测开始时间 $T_begin” >> check_server.log #记录开始检测时间到日志文件
echo “—-” >> check_server.log
echo ” ” >> check_server.log
pid_nu=`ps -ef|grep rsync |grep -v grep|wc -l` #pid_nu 是正常情况下进程的个数 用rsync进程为例子
#echo $pid_nu #输出 变量pid_nu的值,用于调试后面的if判断
if [ $pid_nu -ge 1 ] #如果进程数大于等于 1 (系统进程存在) 为正常
then
echo “server is ok!” >> check_server.log #输出信息到日志 check_server.log 表示正常
else #相反,进程数小于1时
echo “server is bad!” >> check_server.log
sh server_restart.sh & #则重启动服务
fi #if条件结束
T_end=`date +%Y-%m-%d %H:%M:%S` #记录脚本结束时间
echo “at $T_end 检测结束!!” >> check_server.log #写到日志
echo “” >> check_server.log
echo “—-” >> check_server.log
-------
#说明: chmod 755 check_ps.sh
#在crontab中进行设置自动执行的时间
# crontab -e 编辑
写完后发现有点弊端,就是如果进程存在多个(不确定个数)或者进程存在,但是已经死掉的情况下,
该脚本就会不好用了,呵呵,还得找时间优化一下。
最活跃的读者