当前位置: 首页 > others > 正文

一个检查系统进程的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 编辑

写完后发现有点弊端,就是如果进程存在多个(不确定个数)或者进程存在,但是已经死掉的情况下,

该脚本就会不好用了,呵呵,还得找时间优化一下。

本文固定链接: http://2hei.net/%e4%b8%80%e4%b8%aa%e6%a3%80%e6%9f%a5%e7%b3%bb%e7%bb%9f%e8%bf%9b%e7%a8%8b%e7%9a%84shell%e8%84%9a%e6%9c%ac.html | 2hei's site

该日志由 2hei 于2007年04月25日发表在 others 分类下,
原创文章转载请注明: 一个检查系统进程的shell脚本 | 2hei's site

报歉!评论已关闭.