发新话题
打印

问问问???

我想kill掉zombie的进程,可是它会不断变换id号,请问我怎么才能找出一个子进程的父进程,通过写shell能做吗?高手指点指点!!
0 q" _! L9 ^+ {" K谢谢!!" `. _5 A9 D" b# B
4 s9 Q3 I" `" F  D# K( J, W
      
轻轻的,我来了-->linux

TOP

今天刚刚有人问了个类似的问题:http://www.linuxeden.com/forum/showthread.php?threadid=3816
7 g* w0 W  T( u2 @+ y1 [( Y      
庄子曰:“?鱼出游从容,是鱼之乐也。” 惠子曰:“子非鱼,安知鱼之乐?” 庄子曰:“子非我,安知我不知鱼之乐?” 惠子曰:“我非子,固不知子矣;子,固非鱼也,子之不知鱼之乐,全矣。” 庄子曰:“请循其本。子曰‘汝安知鱼乐’云者,既已知吾知之,而问我;我知之濠上也。”

TOP

这个问题我看了,可是它只是说了一种情况啊!我问的是怎么才自动杀掉zombie,我想通过定时执行一个shell来完成,而kill掉zombie,就是kill掉它的父进程,那么我怎么找zombie的父进程呢???不是人工做,所以我问写shell能找出一个子进程的父进程吗?
1 g: s. C8 r, A( P+ g8 h' X所以我问的问题和nakata问的形似而神不是!!!
- O/ p1 t# l4 _" q( v" f      
轻轻的,我来了-->linux

TOP

不知道你要kill的是什么进程,你可以先看看/var/run下的*.pid文件,
: l5 o' P" i& k如果有你要的进程,那就恭喜你了,这里是一个简单的方法:6 F  l& N; a5 i) P5 L
比如说,你要kill掉syslog进程,那么shell程序里有这么一行就行了:% |' C- |$ }, j" Z% K; }$ A
kill `cat /var/run/syslogd.pid`. I3 u4 E, l4 P0 z+ f
注意是反单引号,不是单引号!!
: l# a& p$ \8 |3 w" _! {9 q/ G& D( e- |1 ]; l
如果你发现你很不幸,/var/run/里没有你要的进程的pid号,那么,
" X9 k0 }6 Z& }1.如果这是你开发的程序,就修改它,有zombie进程不是一件正常的事。
7 W2 C8 W4 H: X9 R; m" ^8 e2.如果这是别人的,就问他要升级版本。! P' X6 V1 P5 F& g& y- j! _
3.如果这是高手的程序,象Tr. Linuz 或 otto 写的^_^,那就甭理它。" v! P! E$ F- M: M7 s. j0 u
4.你铁了心硬要kill了它,那就写一个程序,查找这个进程的最小进程号,然后kill掉,我想perl语言就可以。perl的字符串处理还是很灵活的。你可以问问perl程序员。虽然C也可以,但是有点儿...夸张。
0 O6 E0 H: e; b: t
6 y# q2 R, s7 C+ K( s5.以上都不是???!!!那就只好把它扔了!!!      
庄子曰:“?鱼出游从容,是鱼之乐也。” 惠子曰:“子非鱼,安知鱼之乐?” 庄子曰:“子非我,安知我不知鱼之乐?” 惠子曰:“我非子,固不知子矣;子,固非鱼也,子之不知鱼之乐,全矣。” 庄子曰:“请循其本。子曰‘汝安知鱼乐’云者,既已知吾知之,而问我;我知之濠上也。”

TOP

看看这样可以吗

kill `ps -ef|grep xxx|awk '{print $3}'`7 r9 c; m7 v' {& c5 h6 N
其中xxxx 是zombie进程的号码或者名字
/ Z. v- ^9 Z7 A. D比如你的执行程序是 a.out' {/ R( c1 F9 u8 i
kill `ps -ef|grep a.out|awk '{print $3}'`. Y6 E- E8 [% N( ]! j
      
哇....嘟噜嘟噜嗒

TOP

谢谢!!!      
轻轻的,我来了-->linux

TOP

发新话题