如何获取 AIX 上已失效进程的启动时间?

如何获取 AIX 上已失效进程的启动时间?

当我在 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>

相关内容