如何编写一个shell脚本实时的查看某个进程是否正常运行?

charysun 2004-12-01 02:20:11


我现在需要做一个进程监控程序,准备用shell脚本做,实时检查进程运行状况,如果发现进程死掉了,需要重新启动进程。不知道用shell是否可以实现。检查进程状态用ps -ef |grep XXXXX之类的可以吗?会不会ps命令发现进程还在,其实已经死掉了呢?定时运行可以用crontab。只是对ps命令不太放心。这个shell脚本应该是一个守护进程了吧?
...全文
2334 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangjianye 2005-01-12
  • 打赏
  • 举报
回复
top
yjf7888 2004-12-31
  • 打赏
  • 举报
回复
up
soulcy 2004-12-28
  • 打赏
  • 举报
回复
conquer(戏子)的这段代码只能判断系统有没有这个进程存在,进程的状态并没有判断啊。

例如进程处于僵尸状态。。
TobyLee 2004-12-07
  • 打赏
  • 举报
回复
哈哈,楼上的,这是我在这里第三次看到你发这段代码了,很实用,我第一次看到的时候就有收藏的冲动,结果,就让我给Ctrl+C、Ctrl+V下来了,哈哈。
conquer 2004-12-01
  • 打赏
  • 举报
回复
工作代码,你看看就明白了。
#!/bin/sh
# Deamon Check Program in U51
# including :
# 1.alarm(above & Motorola & EMX2500 & Alcatel; 2.connect_EMX)
#


while [ 1 ]
do

#for i in $ABOVE_DAEMON
cat $1|while read pathname appname
do
ps -ef |grep -v "grep"|grep "$appname" |awk '{print "echo ",$8,$9}'> check_file
if test -s check_file
then
echo $appname "\t\tis running"
else
cd $pathname
$appname &
if [ $? -ne 0 ]
then
echo "Run '$appname' failed!"
break
else
echo "start '$appname' successed!"
fi

fi
done

echo "-----------------------------------------------------------------\n"

echo "-----------------------------------------------------------------\n\n"

sleep 60
done # done of while
conquer 2004-12-01
  • 打赏
  • 举报
回复
嘿嘿:)工作代码,权当例子。看看就明白了。
#!/bin/sh
# Deamon Check Program in U51
# including :
# 1.alarm(above & Motorola & EMX2500 & Alcatel; 2.connect_EMX)
#


while [ 1 ]
do

#for i in $ABOVE_DAEMON
cat $1|while read pathname appname
do
ps -ef |grep -v "grep"|grep "$appname" |awk '{print "echo ",$8,$9}'> check_file
if test -s check_file
then
echo $appname "\t\tis running"
else
cd $pathname
$appname &
if [ $? -ne 0 ]
then
echo "Run '$appname' failed!"
break
else
echo "start '$appname' successed!"
fi

fi
done

echo "-----------------------------------------------------------------\n"

echo "-----------------------------------------------------------------\n\n"

sleep 60
done # done of while
charysun 2004-12-01
  • 打赏
  • 举报
回复
没有人知道吗?
charysun 2004-12-01
  • 打赏
  • 举报
回复
需要监控的进程是java进程,不知道如何在启动的时候留下pid,如果有pid的话也可以用C编写守护进程处理了。所以现在才想用ps和shell处理。如果哪位知道的话请指点一二。
core 2004-12-01
  • 打赏
  • 举报
回复
如果被监控的程序是自己开发的,那就再fork一次,父进程用waitpid来处理子进程结束
用SHELL做也不是不可以

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧