• 主页
  • 系统维护与使用
  • 应用程序开发
  • 内核源代码
  • 驱动程序开发
  • CPU和硬件区
  • UNIX文化
  • Solaris
  • Power Linux

unix下 用程序检查某一进程是否存在,若不存在则启动该进程,若存在则不处理

unix_zhangbo 2014-01-12 08:37:41
如题,unix下,在程序中检查某一进程是否存在,若不存在则启动该进程,若存在则不处理,求教各位高手,如何做

不是用 ps -e|grep ;而是同unix下的系统函数实现
...全文
122 点赞 收藏 9
写回复
9 条回复
c_sdn_shang_bu_qi 2014年01月16日
pidname=${ps aux|grep "进程名"|grep -v "grep"} if[ $pidname != ""];then service 服务名 restart else echo "进程已启动" fi
回复 点赞
Carl_CCC 2014年01月14日
如果是这样的话可以用7楼的方法,扫描/proc下的cmdline,或者外调shell脚本。
回复 点赞
非凡glj 2014年01月13日
遍历/proc下的以pid号的目录中的cmdline,判断是否是你要监视的进程,如果找到,则该目录名就是进程的pid,可以做你想做的重启、关闭等操作;如果遍历完之后没有找到该进程,则说明进程已经死亡。
回复 点赞
unix_zhangbo 2014年01月13日
引用 2 楼 erhou134 的回复:
用 kill 函数实现 kill(pid, 0) 当然你要知道他的pid 一般是一个监控程序 负责启动(记录pid),监控,重启,关闭 或者特定的事。。。
能否像ps -e|grep 程序名那样;现在已有程序名,能否用相应的函数查看程序启动了那些进程
回复 点赞
unix_zhangbo 2014年01月13日
引用 1 楼 Idle_Cloud 的回复:
最好的办法是,让程序自己去处理,程序起来后会去锁定一个叫.pid的文件,然后在启动它的时候发现这个文件被锁定了,就会自己退出。http://blog.csdn.net/changli_90/article/details/8911191 看这个blog,扫盲下。
我是想在监控程序中检查主程序是否已经启动,主程序本身允许启动多次。 监控程序实时接收客户端请求,当发现启动主程序请求时,先检查主程序是否存在,若存在,先kill掉主程序,再重新启动,若不存在,直接启动主程序
回复 点赞
unix_zhangbo 2014年01月13日
引用 楼主 unix_zhangbo 的回复:
如题,unix下,在程序中检查某一进程是否存在,若不存在则启动该进程,若存在则不处理,求教各位高手,如何做 不是用 ps -e|grep ;而是同unix下的系统函数实现
我是想在监控程序中检查主程序是否已经启动,主程序本身允许启动多次。 监控程序实时接收客户端请求,当发现启动主程序请求时,先检查主程序是否存在,若存在,先kill掉主程序,再重新启动,若不存在,直接启动主程序
回复 点赞
rethyx 2014年01月13日
想法和楼上一致
回复 点赞
空的 2014年01月13日
用 kill 函数实现 kill(pid, 0) 当然你要知道他的pid 一般是一个监控程序 负责启动(记录pid),监控,重启,关闭 或者特定的事。。。
回复 点赞
Carl_CCC 2014年01月12日
最好的办法是,让程序自己去处理,程序起来后会去锁定一个叫.pid的文件,然后在启动它的时候发现这个文件被锁定了,就会自己退出。http://blog.csdn.net/changli_90/article/details/8911191 看这个blog,扫盲下。
回复 点赞
发动态
发帖子
Linux/Unix社区
创建于2007-08-27

7091

社区成员

7.3w+

社区内容

Linux/Unix社区 应用程序开发区
社区公告
暂无公告