发新话题
打印

问问问???

我想kill掉zombie的进程,可是它会不断变换id号,请问我怎么才能找出一个子进程的父进程,通过写shell能做吗?高手指点指点!!
8 _6 M" a5 \; U( y谢谢!!
6 t6 @1 K: F6 V6 e$ G$ G$ J  a: {6 ?! N* l- t
      
轻轻的,我来了-->linux

TOP

今天刚刚有人问了个类似的问题:http://www.linuxeden.com/forum/showthread.php?threadid=3816
( L5 Q+ Z, S1 T+ q8 S( p& O6 T      
庄子曰:“?鱼出游从容,是鱼之乐也。” 惠子曰:“子非鱼,安知鱼之乐?” 庄子曰:“子非我,安知我不知鱼之乐?” 惠子曰:“我非子,固不知子矣;子,固非鱼也,子之不知鱼之乐,全矣。” 庄子曰:“请循其本。子曰‘汝安知鱼乐’云者,既已知吾知之,而问我;我知之濠上也。”

TOP

这个问题我看了,可是它只是说了一种情况啊!我问的是怎么才自动杀掉zombie,我想通过定时执行一个shell来完成,而kill掉zombie,就是kill掉它的父进程,那么我怎么找zombie的父进程呢???不是人工做,所以我问写shell能找出一个子进程的父进程吗?7 e) N2 @4 H2 {% E0 r% S
所以我问的问题和nakata问的形似而神不是!!!0 Z; b7 P6 T' C2 U
      
轻轻的,我来了-->linux

TOP

不知道你要kill的是什么进程,你可以先看看/var/run下的*.pid文件,
( M9 e" P/ r. u# m' k' y" R% G如果有你要的进程,那就恭喜你了,这里是一个简单的方法:
$ M5 o5 z6 P8 F比如说,你要kill掉syslog进程,那么shell程序里有这么一行就行了:+ H5 }" C7 r- U9 R& w4 Y: i' |
kill `cat /var/run/syslogd.pid`$ @# Z8 c# O: H/ K9 {" ?, g
注意是反单引号,不是单引号!!
5 U, {, V0 ^7 _. I
1 w$ {6 C' s5 k. P* |! ^如果你发现你很不幸,/var/run/里没有你要的进程的pid号,那么,
" |* B1 I) P% T( J4 V, f3 m7 ?1.如果这是你开发的程序,就修改它,有zombie进程不是一件正常的事。! V$ \7 o" c1 |0 `
2.如果这是别人的,就问他要升级版本。  Z. @% b4 S- c& X5 P& \
3.如果这是高手的程序,象Tr. Linuz 或 otto 写的^_^,那就甭理它。
  t' w/ k; M- L) \2 u. l9 }4.你铁了心硬要kill了它,那就写一个程序,查找这个进程的最小进程号,然后kill掉,我想perl语言就可以。perl的字符串处理还是很灵活的。你可以问问perl程序员。虽然C也可以,但是有点儿...夸张。
; s# D- g7 N1 z! G; k
4 f" m1 R6 C1 M$ F; p+ A5.以上都不是???!!!那就只好把它扔了!!!      
庄子曰:“?鱼出游从容,是鱼之乐也。” 惠子曰:“子非鱼,安知鱼之乐?” 庄子曰:“子非我,安知我不知鱼之乐?” 惠子曰:“我非子,固不知子矣;子,固非鱼也,子之不知鱼之乐,全矣。” 庄子曰:“请循其本。子曰‘汝安知鱼乐’云者,既已知吾知之,而问我;我知之濠上也。”

TOP

看看这样可以吗

kill `ps -ef|grep xxx|awk '{print $3}'`
8 i! A$ d0 `2 |/ p0 K( [, P" |其中xxxx 是zombie进程的号码或者名字
/ C8 A; t% B; P9 r2 |- i0 ~比如你的执行程序是 a.out
- Y; q( X% h1 K- q, t' Q2 f, Pkill `ps -ef|grep a.out|awk '{print $3}'`' Y; d6 I) ?$ }+ F8 t# M  r
      
哇....嘟噜嘟噜嗒

TOP

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

TOP

发新话题