- 1. 概要
- 2. ps FreeBSD での動作
- 3. pstree
- 4. 参考サイト
1. 概要
「ps」は、プロセスの状態を表示するコマンドです。
「pstree」は、プロセスの親子関係を表示するコマンドです。
「ps」は方言がひどくてややこしいのですが、「CentOS」のマニュアルに解説が出ていました。
ママ載せますと
ps が受け付けるオプションにはいくつかの種類がある。
1 UNIX オプション。まとめることが可能で、前にはダッシュを置かなければならない。
2 BSD オプション。まとめることが可能で、ダッシュを使ってはならない。
3 GNU ロングオプション。前に二つのダッシュを置く。
別々の種類のオプションは自由に混在させてよいが、衝突が起こるかもしれない。機能的には全く等しい、同義のオプションがいくつかある。これは多くの標準と ps 実装に対して、この ps が互換性を持っているためである。
"ps -aux" は "ps aux" とは異なることに注意すること。 POSIX と UNIX 標準では、"ps -aux" は "x" という名前のユーザーが所有する全てのプロセスを表示し、かつ -a オプションで選択される全てのプロセスを表示する。 "x" という名前のユーザーが存在しない場合、この ps は代わりに "ps aux" というコマンドとして解釈され、警告を表示する。この動作は昔のスクリプトと慣習からの移行の助けになることを意図している。これは脆くて変更される可能性があるので、これに依存すべきではない。
「FreeBSD」では、「BSD」オプションも「UNIX」オプションも使えます。
ダッシュをつけようがつけまいが、ほぼ同じことを意味しています。ややこしいなぁ。
ここでは、わかりにくことを避けるために、あえて、ダッシュをつけるように心がけますが、つけ忘れていたら、ごめんなさい。
2. ps FreeBSD での動作
ps [オプション]
FreeBSD でのオプションには、以下のものがあります。
| オプション | 内容 |
| -a | 自分のプロセスに加え自分以外のプロセスも同様に表示します。 |
| -u | 次のキーワードに関する情報を表示します。 user, pid, %cpu, %mem vsz rss, lim, tt, state, start, time, command |
| -p | 指定したプロセス ID に一致するプロセスに関する情報を表示します |
| -x | プロセス番号を表示します |
| -w | 端末の幅の制限によりコマンドの引数が全部見えないことがあります。そういうときに右端を折り返して表示します。-ww と重ね書きすればすべての引数が見えるようになります。 |
例
$ ps
PID TT STAT TIME COMMAND
34111 p0 Ss 0:00.89 -tcsh (tcsh)
34214 p0 R+ 0:00.01 ps
キーワードの意味を示します。
| キーワード | 内容 |
| %cpu | cpu 使用率(別名 pcpu) |
| %mem | メモリ使用率(別名 pmem) |
| command | コマンド名と引数 |
| lim | メモリ利用のリミット |
| pid | プロセス ID |
| re | 実メモリ常駐時間(秒単位:127 = 無限) |
| rss | 常駐セットサイズ |
| sl | プロセス番号 |
| start | 開始時刻 |
| state | 記号でのプロセスの状態(別名 pstat) |
| time | ユーザ + システムの合計 cpu 時間(別名 cputime) |
| tt | 制御端末名(2 文字の省略形) |
プロセスの状態(state)は、次の文字列で表示します。例えば、"RWNA" の最初の文字は、プロセスが runnable 状態であることを示します。
| 文字列 | 状態 |
| D | ディスク(あるいは他の割り込み不可能な短期間の)待ち状態 |
| I | idle 状態(20秒以上 sleep している) |
| J | jail 中のもの。jail のホスト名は /proc/>pid</status にある |
| R | runnable 状態 |
| S | 20秒未満の sleep 状態 |
| T | stop 状態 |
| Z | 死んでいる(ゾンビ)状態 |
| さらにこの後に文字があれば、さらなる状態情報を表示します。 |
| + | プロセスはその制御端末のフォアグラウンドプロセスグループに属している |
| > | CPU のスケジュール優先度が上げられている |
| < | メモリ要求に対するソフトリミットが指定されており、現在そのリミットを超えている。このようなプロセスは(必然的に)スワップされない |
| A | ランダムなページスワップを要求した |
| E | 終了しようとしている |
| L | 実メモリ中にロックされたページを持っている |
| N | プロセスはスケジューリング優先度が下げられている |
| S | FIFO ページスワップを要求した |
| s | セッションリーダである |
| V | vfork の間、一時中断されている |
| W | スワップアウトされている |
| X | トレースされているかデバッグされている |
3. pstree
「pstree」は、プロセスの親子関係を表示するコマンドです。
「FreeBSD」の場合、「ports」か「pkg」でインストールする必要があります。
「ports」は、下記に存在します。
/usr/ports/sysutils/pstree
下記の形式で、コマンドを実行します。
pstree [-Uw] [-f file] [-g n] [-l n] [-p pid] [-s string] [-u user] [rootpid ...]
わたしは、かならずプロセス「ID」を指定するものだとばかり思っておりましたが、指定しなくても打てる。
pstree
-+= 00001 root /sbin/init
|--= 00159 root adjkerntz -i
|--= 00667 root /sbin/devd
・・・ 略 ・・・
|--= 03787 root /usr/libexec/getty Pc ttyv5
|--= 03788 root /usr/libexec/getty Pc ttyv6
\--= 03789 root /usr/libexec/getty Pc ttyv7
この場合、プロセス番号 1、「root /sbin/init」以下のツリーを表示するようです。
わたしは、「top」コマンドで、ぶんぶん走り回っているプロセスが存在するとき、そのプロセスの派生元を調べるときなどに使用しています。
4. 参考サイト
本ページは、下記のサイト、「ChatGPT」くんおよび「Google」大先生を参考にさせていただきました。
「【 pstree 】 プロセスの親子関係をツリー表示する」
|
|