当我在 AIX 上运行以下命令时:
22:root@SERVER:/root # ps -ef | head -1
UID PID PPID C STIME TTY TIME CMD
22:root@SERVER:/root # ps -ef | grep defunct | head -1
foo 9364552 7975688 0 0:00 <defunct>
我遇到了这个处于 状态的过程<defunct>
。kdb
如果我查看该进程的 PID,则启动内核调试器:
22:root@SERVER:/root # kdb
WARNING: Version mismatch between unix file and command kdb
START END <name>
0000000000001000 0000000004160000 start+000FD8
F00000002FF47600 F00000002FFDF9C8 __ublock+000000
000000002FF22FF4 000000002FF22FF8 environ+000000
000000002FF22FF8 000000002FF22FFC errno+000000
F1000F0A00000000 F1000F0A10000000 pvproc+000000
F1000F0A10000000 F1000F0A18000000 pvthread+000000
read vscsi_scsi_ptrs OK, ptr = 0x0
(0)> tpid -d 9364552
SLOT NAME STATE TID PRI RQ CPUID CL WCHAN
pvthread+05FE00 1534 <zombie> ZOMB 5FE00AD 03C 5 0
注意到SLOT
它正在占用哪个,查看start
这个过程的:
(0)> u 1534 | grep -i start
(0)> where 1534
thread F1000F0A1005FE00 not loaded
(0)>
(0)> exit
看起来,没有任何STIME
与该过程相关的内容。
以下是有关我的系统的其他信息:
22:root@SERVER:/root # oslevel -s
6100-08-03-1339
22:root@SERVER:/root # uname
AIX
以及有关我的<defunct>
流程的其他信息:
22:root@SERVER:/root # procstack 9364552
procstack: 9364552 is a kernel process
22:root@SERVER:/root # proctree 9364552
7975688 /foo/foobinary
9364552
我的问题:对于已失效的进程,“ps”命令中没有 STIME。有什么方法可以获取它们的开始时间吗?
答案1
ps -fp <pid>
通常会向您提供该信息
# ps -fp 6357210
UID PID PPID C STIME TTY TIME CMD
root 6357210 1 35 15:25:31 - 3:03 nfsd
答案2
ps -el | grep "Z"
这将显示 AIX 服务器上的所有僵尸进程。第二个最后一列将显示自开始以来已经过去了多长时间:
$ ps -el | grep 'Z'
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
250005 Z 150921 18284566 21102640 0 60 20 :00 <defunct>