(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【UNIX】psコマンドが使用できない場合にプロセス情報を調べる方法

スポンサーリンク

はじめに

以下のようにプロセスの起動状況を調査するpsコマンドですが、環境によっては使用できなかったりコマンドが削除されている場合があります。

$ ps xx
      PID    PPID    PGID     WINPID   TTY         UID    STIME COMMAND
....

本記事ではpsを使用せずに上がっているプロセスを調査する流れについて記載します。

/procディレクトリを利用する

結論から言えばルートディレクトリ直下にあるprocディレクトリ配下を確認します。

例えばpsコマンドが入っている環境におけるpsコマンドと/procディレクトリ配下の一覧の取得結果を並べます。

  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 /bin/bash /hoge.sh
18585 ?        Sl     0:00 xx
18593 ?        S      0:00 xx
18594 ?        S      0:00 xx
18595 ?        S      0:00 xx
19089 ?        Ss     0:05 xx
19093 ?        S      0:00 xx
19094 ?        S      0:01 xx
19095 ?        S      0:00 /usr/sbin/sshd -D
42796 pts/0    Ss     0:00 /bin/bash
...
45287 pts/0    R+     0:00 ps -x
]# ls -l /proc
total 0
dr-xr-xr-x  9 root     root  ..  1
dr-xr-xr-x  9 root     xx  .. 18585
dr-xr-xr-x  9 xx xx ..18587
dr-xr-xr-x  9 root     xx ..18593
dr-xr-xr-x  9 root     xx ..18594
dr-xr-xr-x  9 root     xx ..18595
dr-xr-xr-x  9 xx xx ..18597
dr-xr-xr-x  9 xx xx .. 18605
dr-xr-xr-x  9 root     root  ..19089
dr-xr-xr-x  9 root     root .. 19093
dr-xr-xr-x  9 root     root ..19094
dr-xr-xr-x  9 root     root .. 19095
dr-xr-xr-x  9 root     root .. 42796
...
dr-xr-xr-x  2 root     root  .. acpi
-r--r--r--  1 root     root  .. buddyinfo
dr-xr-xr-x  4 root     root .. bus
-r--r--r--  1 root     root  .. cgroups

procディレクトリ内部の情報

上記にて数字の名前がついているディレクトリがありますが、それらは実行中のプロセス番号と一致しています。要はプロセスの生成によって作成されるディレクトリです。

このディレクトリは以下記事でも触れたように中にはプロセスの情報を表すファイルが存在し

例えば配下にあるcmdlineファイルにはそのプロセスを作成したコマンド名が格納されています。

同じくstatusファイルにはそのプロセスの詳細情報が格納されているので興味がある方は中身を見てみてください。

# cat status
Name:   hoge.sh
Umask:  0022
State:  S (sleeping)
Tgid:   1
Ngid:   0
Pid:    1
...

終わりに

/procディレクトリ配下にはプロセス関連の生ファイルが動的に変化する情報として格納されているので、ぜひ興味があれば触ってみてください。

以上、ご参考になれば幸いです。