procstat: FreeBSD の強化版 ps2009年01月23日 09時58分33秒

FreeBSD 7 系に言わば ps の強化版の procstat が追加された。ps では、手に入らない情報も見られる。

通常の出力。

    
% procstat 1158 1141 1092 1087 1173
  PID  PPID  PGID   SID  TSID THR LOGIN    WCHAN     EMUL          COMM        
 1158  1102  1158  1102  1102   1 uyota    select    FreeBSD ELF32 sylpheed    
 1141     1  1141  1141     0   1 root     select    FreeBSD ELF32 moused      
 1092  1085  1092  1092  1092   1 uyota    select    FreeBSD ELF32 top         
 1087  1083  1087  1087  1087   1 uyota    ttyin     FreeBSD ELF32 systat      
 1173  1169  1159  1102  1102   5 uyota    ucond     FreeBSD ELF32 seamonkey-bin

-b を指定して、プログラムの名前とそのパスを見られる。


% procstat -b 1158 1141 1092 1087 1173
  PID COMM             PATH                                                 
 1158 sylpheed         /usr/local/bin/sylpheed
 1141 moused           /usr/sbin/moused
 1092 top              /usr/bin/top
 1087 systat           /usr/bin/systat
 1173 seamonkey-bin    /usr/local/lib/seamonkey/seamonkey-bin

-c を用いて、引数を見られる。


% procstat -c 1158 1141 1092 1087 1173
  PID COMM             ARGS                                                 
 1158 sylpheed         sylpheed
 1141 moused           /usr/sbin/moused -p /dev/ums0 -t auto -I /var/run/moused.
ums0.pid
 1092 top              top
 1087 systat           systat -vmstat 1
 1173 seamonkey-bin    /usr/local/lib/seamonkey/seamonkey-bin

更に -k を指定して、カーネル内の状態を調べる事も出来る。もし、プロセスが殺せない、終了しない時には、これで調べると何か手がかりがあるかも知れない。


% procstat -k 1158 1141 1092 1087 1173
  PID    TID COMM             TDNAME           KSTACK                       
 1158 100117 sylpheed         initial thread   mi_switch sleepq_switch sleepq_ca
tch_signals sleepq_wait_sig _cv_wait_sig poll syscall Xint0x80_syscall 
 1092 100075 top              -                mi_switch sleepq_switch sleepq_ca
tch_signals sleepq_timedwait_sig _cv_timedwait_sig kern_select select syscall Xi
nt0x80_syscall 
 1087 100106 systat           -                mi_switch sleepq_switch sleepq_ca
tch_signals sleepq_wait_sig _sleep ttysleep ttread ptsread giant_read devfs_read
_f dofileread kern_readv read syscall Xint0x80_syscall 
 1173 100108 seamonkey-bin    initial thread   mi_switch sleepq_switch sleepq_ca
tch_signals sleepq_timedwait_sig _cv_timedwait_sig poll syscall Xint0x80_syscall
 
 1173 100137 seamonkey-bin    -                mi_switch sleepq_switch sleepq_ca
tch_signals sleepq_wait_sig _cv_wait_sig poll syscall Xint0x80_syscall 
 1173 100139 seamonkey-bin    -                mi_switch sleepq_switch sleepq_ca
tch_signals sleepq_timedwait_sig _sleep __umtx_op_cv_wait _umtx_op syscall Xint0
x80_syscall 
 1173 100142 seamonkey-bin    -                mi_switch sleepq_switch sleepq_ca
tch_signals sleepq_wait_sig _sleep __umtx_op_cv_wait _umtx_op syscall Xint0x80_s
yscall 
 1173 100143 seamonkey-bin    -                mi_switch sleepq_switch sleepq_ca
tch_signals sleepq_wait_sig _sleep __umtx_op_cv_wait _umtx_op syscall Xint0x80_s
yscall 
 1173 100174 seamonkey-bin    -                mi_switch sleepq_switch sleepq_ca
tch_signals sleepq_timedwait_sig _sleep __umtx_op_cv_wait _umtx_op syscall Xint0
x80_syscall