fluzsr 发表于 2013-01-09 17:42

关于linux上进程检索的问题

linux上经常会涉及到一些后台crontab调用的shell脚本。当存在如下情况时: 每次CRONTAB调用一个shell脚本时,都会用ps -ef|grep shell脚本名的方法来检查之前运行的进程是不是还存在,假设并发100个进程同时执行的时候,就会同时有100个ps的命令,这样会很消耗主机的内核资源。有没有什么好的编程设计方法可以避免使用大量的PS来检查进程,而又可以达到检查之前的进程是否存在的呢?

shenyue_sam 发表于 2013-01-10 08:30

进程启动时生成pid文件,用kill 0检查pid。

fluzsr 发表于 2013-01-10 11:50

回复 2# shenyue_sam


    shell里面怎么记录kill 0 pid的结果呢

shenyue_sam 发表于 2013-01-10 13:25

抱歉,kill(pid,0)在C语言里可用,好像shell里没有对应功能。

在shell里,查看/proc/pid文件夹是否存在,这样可以吧

fluzsr 发表于 2013-01-10 15:24

回复 4# shenyue_sam

SHELL里面kill父进程的时候,子进程不会被KILL,而子进程的父进程会自动变成1,有没有办法KILL 父进程的时候同时KILL掉子进程呢
   

shenyue_sam 发表于 2013-01-10 15:58

试试这个
kill -- -parentPID

PID前加一个减号,就会向进程组发信号。
--是避免kill把PID前的减号当成选项。

fluzsr 发表于 2013-01-10 16:19

回复 6# shenyue_sam


    非常感谢啊,这个方法可以
页: [1]
查看完整版本: 关于linux上进程检索的问题