LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2185|回复: 9

请问大家 如何监视某个进程,如果退出了,就重启这个进程?

[复制链接]
发表于 2009-10-21 09:37:01 | 显示全部楼层 |阅读模式
不知道如何实现监视某个进程,

请大家说说

谢谢
发表于 2009-10-21 10:58:01 | 显示全部楼层
shell脚本
回复 支持 反对

使用道具 举报

发表于 2009-10-21 11:02:23 | 显示全部楼层
shell 脚本里面,使用如 ps aux | grep "想要监视的进程名称"

如果存在,则不理会,不存在,则执行启动进程命令。

一两句就可以搞定了。
回复 支持 反对

使用道具 举报

发表于 2009-10-21 11:43:31 | 显示全部楼层
#!/bin/bash

while true:
do
   program=$(ps aux | grep <program_name>$)
   if [ -z "$program" ] ; then
        <program_name>
   else
        sleep <timenum>
   fi
done
回复 支持 反对

使用道具 举报

发表于 2009-10-21 12:08:46 | 显示全部楼层
牛X,还要学习
回复 支持 反对

使用道具 举报

发表于 2009-10-21 12:39:46 | 显示全部楼层
完全没有必要这样,只要用一个循环式的脚本替代这个进程就可以了。
在脚本中可以用一个死循环启动它。

当然,如果用C程序实现更简单:把进程启动为自己的子进程,一旦收到SIGCHILD信号则表示子进程已经退出,重新启动对应进程。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-21 18:04:27 | 显示全部楼层
谢谢大家 :)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-21 18:07:52 | 显示全部楼层
poet  可以详细说下吗?没有明白,谢谢你了。
顺便想问问,shell脚本可以插在C代码里执行吗?
谢谢大家
回复 支持 反对

使用道具 举报

发表于 2009-10-21 19:14:28 | 显示全部楼层
一条命令就成,写到脚本中也可以:
  1. while true; do something; sleep 2; done
复制代码


/sbin/init 也可以。
*de 的 session 管理器也能做到。

或者用工具 daemon:
http://www.libslack.org/daemon/

网络程序的话,可以用 inetd 或 xinetd。
回复 支持 反对

使用道具 举报

发表于 2009-10-22 00:19:07 | 显示全部楼层
Post by xp4105;2038745
poet  可以详细说下吗?没有明白,谢谢你了。
顺便想问问,shell脚本可以插在C代码里执行吗?
谢谢大家

可以。在 C 里使用 system() 函数可以启动脚本文件。

如: system ("/home/beyes/myshell.sh");

myshell.sh 可事先赋予可执行的权限。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表