19,612
社区成员
发帖
与我相关
我的任务
分享
find /opt/servers/s* -name pid -print | while read line
do
pid=`cat $line`
ps -ax |awk '{print $1"-"$3}' | grep $pid | grep -iv "z" > a.txt
if [ -s a.txt ]
then
echo "$pid works normal"
else
echo "$pid doesn't work normal"
#now you can send your email here..
fi
这样你kill以后应该不会还显示works normal了,在确定一下输入你的Linux版本输入 ps -ax 第一列和第三列是不是对应你的pid和进程状态,如果不是将相应的$1和$3改成对应的列
2.grep -iv "z" > a.txt 表示这个进程不是僵尸进程,不然这个进程pid即使存在,是僵尸进程也是没有用的
3. [ -s a.txt] 表示这个文件存在且不为空,如果里面有内容,表示ps中有这个进程且不是僵尸进程,这样大概就可以判断你的这个pid进程是正常工作的了
这个脚本要求在执行期间不能杀死相应进程,不然可能检测不到,所以建议放到crontab中,间隔几秒钟执行检查一遍会好些
find /opt/servers/s* -name pid -print | while read line
do
pid=`cat $line`
ps -ax | grep $pid | awk '{print $3}' | grep -iv "z" > a.txt
if [ -s a.txt ]
then
echo "$pid works normal"
else
echo "$pid doesn't work normal"
#now you can send your email..
fi