如何用守护进程来监控另一个进程的状态

gcc_gun 2009-08-14 10:40:48
如题,当另一个进程状态僵死或者不可用的时候,守护进程就会去重新启动这个进程,这如何能够实现,请各位DX帮忙~~~
...全文
842 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gcc_gun 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 vicky1982 的回复:]
假设要监控的进程名称为test,TargetProcessName为启动该进程的脚本
while [ 0 ]
do
    Result=$(ps -ef | grep -v grep |grep "test")
    if [ "" == "$Result" ]
    then
RecordTime=$(date)
echo  "Restar test" >>$LogFile
        nohup $TargetProcessName>>$LogFile &
sleep 2
    fi
    Result=
done
[/Quote]
谢谢,这种方法是实现了如果进程列表中没有该进程的话,就执行相应的程序。
但是我现在想要实现的是进程状态不正常的时候就对其进行重启。
我现在的做法是:用父进程去创建这个进程,然后调用waitpid(),该函数在子进程状态改变为不正常的时候会返回,根据返回值做一些相应的处理。
另外,根据进程占用CPU使用率的情况也可以获得一些信息,但是用TOP来获取CPU占用率比较困难,但是TOP是实时的,信息比较准。
vicky1982 2009-08-19
  • 打赏
  • 举报
回复
假设要监控的进程名称为test,TargetProcessName为启动该进程的脚本
while [ 0 ]
do
Result=$(ps -ef | grep -v grep |grep "test")
if [ "" == "$Result" ]
then
RecordTime=$(date)
echo "Restar test" >>$LogFile
nohup $TargetProcessName>>$LogFile &
sleep 2
fi
Result=
done
threeleafzerg007 2009-08-18
  • 打赏
  • 举报
回复
回楼上 都能 status 有一系列的宏 对应可以检测。
threeleafzerg007 2009-08-17
  • 打赏
  • 举报
回复
你说的一般都是一个watch dog 进程 一旦被监视进程死掉了 对吧 就立马重启一下。

也简单, 用watch dog进程 fork 被监视进程 然后 waitpid上 根据 返回的status 决定进一步的操作。

用脚本估计也是行的。
gcc_gun 2009-08-17
  • 打赏
  • 举报
回复
怎么没有人来看看呢。。。小弟急啊~~~
gcc_gun 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 threeleafzerg007 的回复:]
你说的一般都是一个watch dog 进程  一旦被监视进程死掉了  对吧  就立马重启一下。

也简单, 用watch dog进程 fork  被监视进程  然后  waitpid上  根据 返回的status 决定进一步的操作。

用脚本估计也是行的。
[/Quote]
对啊,是指的这个意思,呵呵,谢谢啊~~~
waitpid能够返回进程的僵死啊,异常这些状态吗?我去查一下。
另外再问一下,守护进程能否完成此项工作的?
gcc_gun 2009-08-14
  • 打赏
  • 举报
回复
谢谢一楼的回复,你回复的网址不知道为什么我打不开~~~
在这过程中我自己找到了一个,但是效果不好~~~当一个进程处于(SL)状态的时候,我没有找到这个状态是什么意思,猜想应该是中断的意思吧,那个脚本就没有作用了,进程一直处于死的状态,kill是不起作用的了,不知道是怎么回事~~~我里面也没有用到什么信号量啊这些会导致相互等待的东西,请帮忙,谢谢~~~
  • 打赏
  • 举报
回复
http://www.zrway.com/news/news_in.jsp?RecNo=332
其实写个脚本监控即可

23,124

社区成员

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

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