求助:奇怪的[defunct]进程

最近遇到一个问题,困扰了我两星期,还是没解决,所以向各位求助. , o7 w& D( W% Y# ]9 P! y

) E' D6 [' `# o) O# \  q$ M' M情况如下:
  ]+ A# t* w& ?# c" {6 u我公司有一项目,对安全要求及高,所有的相关文件资料,都保存在一个 7 [5 Z$ ]1 r6 V! J5 E3 j& L
专用的服务器上,该服务器单独安放在一24小时监控的房间,并且通过 # w+ g6 u5 R  M/ p
防火墙与外部隔离,防火墙只开了一个22口(SSH),服务器上只运行一 ( ^+ ^. I; Y7 X6 G# ]
SSH后台进程,(SSH 公司产品,非OPENSSH).该口有两个作用,一是允
. m5 _9 ^  i, ~0 o* ~; X& [许系统管理员从特定主机进入,另外就是应用程序以特定用户,从特定
; q+ m, s8 i5 Z, q# m- d* N8 ?+ x主机进入. % m7 |) @( S' s! F
我在该系统上创建了一个用户:secureuser,并把默认的LOGIN SHELL 8 a9 o8 X+ [5 ~8 k8 c
从/bin/bash,改为自己写的一个假SHELL: xsh.该SHELL用bash编写, 3 O0 R. E8 U3 S$ L& X0 s  {3 L
内部定义了一些命令如LS/MV/MD/CP等,供外部程序调用.我还创建了
, U& v( ~4 S, V( F正确的PUBLIC/PRIVATE KEY给SSH用.这样,外部程序,可以通过SSH
. {  k8 F8 P+ Q* M! D+ J+ ^. z- p3 G1 S对内部文件进行操作.一般就像通过SSH执行远程命令一样: - |2 T; t6 ?: I  k
ssh secureuser@fileserver.x.com MV /abc /ABC . Y- T; x" O2 i( _
# p! `* _, Y8 |0 q
在开发和测试环境下,一切非常顺利,达到了设计要求.但在进入生产环
2 b* E$ f4 `8 ~% T, q% }5 {境(production-stage)测试时遇到了一个怪现象,远程系统执行时经 . p9 U* u) P7 N: J
常莫名其妙地HANG UP.用PS看进程表,发现[xsh <defunc>]进程,
, ^5 ?) [; }' h5 e! t" I- X: X也就是说,通过SSH远程执行时,SSHD FORK的子进程已经结束,但不知 . R% v* y/ q2 G
何故,SSHD并没有去读子进程的返回码并退出,这样xsh就变成了一个僵 4 h/ x& H! c! @; V9 \
尸(ZOMBIE)进程.仔细研究后,我发现系统并不是真正挂住了,过上1-2
8 W1 ]- J' L: j5 Q6 ~7 @分钟,有时1-2小时,有时1-2天,它会去读返回值并继续,当然更长的时间
8 t8 @) p" x- z我没耐心去等待.或者当它挂住时,如果你在客户端(发SSH命令端)按一
9 Q' e+ H4 i; d9 z个回车,它又会继续.这种现象不是每次发生,但很频率较高,而且对有些
4 `( k% A2 {2 [" C; X$ m2 B6 g/ t目录操作,更容易出现. 2 d% G! `9 u5 m5 J1 Z
* J+ r+ t/ O/ W& G
系统环境:
; S  x7 v" s. k, }2 @OS: Redhat 7.2, kernel 2.4.9.xx & K# D7 d6 y6 w8 X: `. U
ssh: 2.4.0 # p; w9 r" p& C; g. A  u( _
firewall: ipchain/iptable
9 @% K, r! T  W- g" X* V$ LBASH: 2.05.8
0 P/ S# \8 I" V# Z4 m
8 i0 X* b9 A, [' v: j% @注: 由于权限,我无法接触到PRODUCTION环境,以上只是猜测.我用SSH的
; m  j: E) O7 z2 kDEBUG功能做的测试也是在其他SERVER上进行. 两个SERVER之间有如下
  A/ @7 L: Z" ^* S: ^不同: ! f0 {  O+ L5 f  n
PRODUCTION TEST
* l7 @$ g2 o! W* y6 }3 网卡,但只用两个 2 网卡 % x. F2 s( J' m9 G8 g( X/ t  L
2 CPU 1 CPU 7 P" f# v% ^! y6 X5 y( w
2.4.9-31 enterprise SMP 2.4.9-1X 1 G0 b8 u9 `: L' O7 I( p
SCSI IDE , X9 l- L  _9 B( e
8 HDs 1 HD 3 l$ X# f3 j- G8 D
仅安装了部分RPM包,
9 _" e. ]- W; f5 U/ r; y) h具体情况不清楚 几乎安装了全部RPM包 0 L) Q3 g8 H5 c# }
/ L8 f1 m" D" p. _: Y6 F
我分析了部分SSH CODE,发现它核心是一个事件循环,通过一系列CALLBACK : I! {% s3 {) T* |
函数来驱动.我怀疑是某些原因导致SSHD无法正确CATCH SIGNAL 17(SIGCHLD). ) B; Z. ?7 `2 T% j

2 E6 q6 Z4 @" r! z7 n不知道各位有什么好主意帮我解决这个问题.+ M5 R$ n, ^' D+ D7 R+ `
如果有方法,请立即EMAIL我:allen_zhao@hotmail.com 3 q0 d% i- q/ Q' B/ [1 w' z4 p5 z9 X
      

作者: abc123   发布时间: 2002-07-12

检查一下你的xsh是不是有问题: X5 h2 J5 h. T8 ]$ q
另外是不是在测试环境下也完全一样      

作者: 真无极   发布时间: 2002-07-12

还有有没有通过防火增      

作者: 真无极   发布时间: 2002-07-12