メンテナンス・トラブルシュート - コマンド・ユーティリティ - pstree

クラウディア 
1. 概要
2. インストール
3. 使い方

1. 概要

 これは、「freebsd-users-jp」で、質問をしたときに、ある事象をつきとめるために教えていただいた、ツールです。  親プロセスからのツリー構造がわかるというスグレモノ!

2. インストール


cd /usr/ports/sysutils/pstree
make
make install
 オプションは、ありません。

3. 使い方

 この場合、親プロセスを知る必要があるわけですが。  「ps」コマンドの「j」オプションで、親プロセスを知ることができます。  「httpd」の子プロセスを例にとりますが。  「top」で見たときに

last pid: 65719;  load averages:  0.26,  0.26,  0.33; battery: -1%                         up 4+00:48:34  08:30:43
119 processes: 1 running, 118 sleeping
CPU:  0.2% user,  0.0% nice,  0.1% system,  0.0% interrupt, 99.7% idle
Mem: 883M Active, 1372M Inact, 27M Laundry, 928M Wired, 353M Buf, 566M Free
ARC:

Swap: 12G Total, 1652M Used, 10G Free, 13% Inuse

  PID USERNAME    THR PRI NICE   SIZE    RES STATE    C   TIME    WCPU COMMAND
65375 www          27  52    0   500M   255M piperd   0   0:01   0.58% httpd
65719 root          1  20    0    15M  3604K CPU2     2   0:00   0.06% top
 1743 mysql        44  20    0  2056M    83M select   1   6:48   0.02% mysqld
 とまぁ、最上位に「httpd」の子プロセスの一つがいます。  これの親プロセスを「ps -j」で調べます。

$ ps -j 65375
USER   PID  PPID  PGID   SID JOBC STAT TT     TIME COMMAND
www  65375 65370 65370 65370    0 I     -  0:00.66 /usr/local/sbin/httpd -DNOHTTPACCEPT
 「PPID」が親プロセスの「ID」になるわけです。  これを「pstree」で見ると

pstree 65370
-+= 65370 root /usr/local/sbin/httpd -DNOHTTPACCEPT
 |--- 65372 www /usr/local/sbin/httpd -DNOHTTPACCEPT
 |--- 65374 www /usr/local/sbin/httpd -DNOHTTPACCEPT
 |--- 65375 www /usr/local/sbin/httpd -DNOHTTPACCEPT
 |--- 65376 www /usr/local/sbin/httpd -DNOHTTPACCEPT
 \--- 65377 www /usr/local/sbin/httpd -DNOHTTPACCEPT
 と、親プロセスからのツリー構造がわかるわけです。  自分が意図的に実行しているわけでないプロセスが、「cron」や他のデーモンから起動されているときに、どのプロセスから起動されたかが突き止められます。  これで、元々の問題であったことが突き止められそうです。  教えてくださった方に感謝いたします。