pstreeめもめもも

とりあえずあとで書くメソッド。
ちょこっとだけ書いてみる。
ソースはまだ読んでない...
実は内部でps読んでるだけじゃないかとか疑ってみたり...

Linuxの方が何か使いやすそう。

ちょこっと見てみたら、defineで定義してるPSCMDってのがそうみたい。つか、

ps -eo uid,pid,ppid,pgid,args

って何??? こんなオプションがあるとはさすがGNU謹製...

# やっぱ手元にSolarisほしいな...検証できん

Solarisの場合

> uname -a
SunOS XXXX 5.10 Generic sun4u sparc SUNW,Serverblade1
> pstree --help
pstree: illegal option -- help
pstree $Revision: 2.27 $ by Fred Hucht (C) 1993-2004
EMail: fred AT thp.Uni-Duisburg.de

Usage: pstree [-f file] [-g] [-u user] [-U] [-s string] [-p pid] [-w] [pid ...]
   -f file   read input from <file> (- is stdin) instead of running
             "ps -ef"
   -g n      use graphics chars for tree. n=1: IBM-850, n=2: VT100
   -u user   show only branches containing processes of <user>
   -U        don't show branches containing only root processes
   -s string show only branches containing process with <string> in commandline
   -p pid    show only branches containing process <pid>
   -w        wide output, not truncated to window width
   pid ...   process ids to start from, default is 1 (init)
             use 0 to also show kernel processes
> pstree -u youichi
-+= 00000 root 0:28 sched
 \-+- 00001 root 0:10 /sbin/init
   \-+- 00316 root 0:00 /usr/lib/ssh/sshd
     \-+- 15409 root /usr/lib/ssh/sshd
       \-+- 15412 youichi /usr/lib/ssh/sshd
         \-+- 15414 youichi -tcsh
           \-+- 15556 youichi pstree -u youichi
             \-+- 15557 youichi sh -c ps -ef
               \--- 15558 youichi ps -ef

Linuxの場合

$uname -a
Linux XXXX.co.jp 2.4.21-15.ELsmp #1 SMP Sun May 16 01:48:39 EDT 2004 i686 i686 i386 GNU/Linux
$pstree --help
pstree: オプションが違います -- -
usage: pstree [ -a ] [ -c ] [ -h | -H pid ] [ -l ] [ -n ] [ -p ] [ -u ]
              [ -G | -U ] [ pid | user]
       pstree -V

    -a     show command line arguments
    -c     don't compact identical subtrees
    -h     highlight current process and its ancestors
    -H pid highlight process "pid" and its ancestors
    -G     use VT100 line drawing characters
    -l     don't truncate long lines
    -n     sort output by PID
    -p     show PIDs; implies -c
    -u     show uid transitions
    -U     use UTF-8 (Unicode) line drawing characters
    -V     display version information
    pid    start at pid, default 1 (init)
    user   show only trees rooted at processes of that user

$pstree -u youichi
ssh

ssh

ssh

ssh

sshd---tcsh---pstree
$pstree -ah youichi
ssh cvsXXX cvs\040server

ssh cvsXXX cvs\040server

ssh cvsXXX cvs\040server

ssh cvsXXX cvs\040server

sshd
  `-tcsh
      `-pstree -ah youichi

GNUのps入れてLinuxのifdefのとこをSolarisでも有効にしたらコンパイルできるかなぁ...?
ま、一筋縄じゃいかないんだろうけれど...