psコマンド

Linux
この記事は約6分で読めます。

psコマンドは、Linux上で走っているプロセスを静的に調べるコマンドです。

システム管理者が、無駄なリソースを食っているプロセスが無いかを監視する時などに使われます。

ヘルプ

普通に ” ps –help ” とすると、どの種類のヘルプにするかを聞いてきます。(沢山のオプションがあるせいです)

ps --help

つまり、 ” ps –help ” の後に、もう1文字(又は文字列)を付け加える必要があります。

詳細なヘルプ

ヘルプの種類は ” s, l, o, t, m, a ” の6つ、最後の ” a ” は全種類を表示します。

以下、 ” s, l, o, t, m ” の5つのヘルプを表示します。(覚えなくていいです)

又は ” ps –help simple ” でも可。

ps --help s

又は ” ps –help list ” でも可。

ps --help l

又は ” ps –help output ” でも可。

ps --help o

又は ” ps –help threads ” でも可。

ps --help t

又は ” ps –help misc ” でも可。

ps --help m

オプションの種類

昔からあるコマンドのせいか、オプションの種類も ” – ” 付きや無しなど色々あります。

” – ” の無しのオプションがBSD形式、有りがUNIX形式です。被っているオプションも多いです。

オプションの形式凡例basiclistoutputthreadsmisc
BSD形式aa, r, T, xp, q, t, Uf, j, l, Z, O, o,
s, u, v, x
H, mc, e, K, L,
n, S, V, w
UNIX形式-a-a, -A, d,
-e, -N
-C, -g. -G,
-p, -q,
-s, -t, -u, -U
-D, -F, -f, -H, -j,
-l, -M, -O, -o,
-p, -y
-L,
-m,
-T
-c, -y,
-V, -w
GNUロング
オプション形式
–aaa–deselect–group,
–Group,
–pid,
–ppid,
–quick-pid,
–sid,
–tty,
–user,
–User
–forest,
–format
–context,
–headers,
–no-headers,
–cols,
–columns,
–width
–rows, –lines,
–signames
–sort,
–cumulative,
–version

psの実行

何もオプションをつけずに実行すると、自分が実行しているプロセスのみを表示します。これは情報が少なく、あまり有用性がありません。

ps

ps aux

良く使われるオプションでしばしば ” ps aux ” とセット扱いされています。

表形式で出力されており、そのヘッダーには以下の意味があります。

表形式で表示されるのは ” aux ” の中の ” u ” オプションのおかげ。残りの ” a + x ” オプションで全プロセスを表示します。

ヘッダー列意味
USERユーザ名(プロセスの所有者)
PIDプロセスID(他と重複しない)
%CPUCPU使用率
%MEMメモリ使用率
VSZ仮想メモリ使用量(kB)
RSS物理メモリ使用量(kB)
TTYプロセスが関連付けられている端末名
STATプロセスの状態コード(後述)
STARTプロセス開始時間
TIMEプロセスが使用したCPU時間の合計
COMMAND実行中のコマンド(コマンドライン引数)

LINUXサーバー管理者に必要な情報が満載ですので、サーバー管理者の方々御用達のオプションです。

実行結果

実は裏では非常に多くのプロセスが動作していることが分かります。

ps aux1
ps aux2

表形式となっている為、メモリやCPUなどのリソースの使用量が一覧で分かります。

STAT列の解釈

STAT列は、状態コード1文字と修飾子の組み合わせで表示されます。

状態コード
状態コード説明
R実行中(Running)又は実行可能状態、CPUで動作中。
S待機中(Sleeping)割込可能
D割込不可の待機中ディスク操作中など
Zゾンビプロセス終了したが親プロセスが回収していない
T停止中
Iアイドル中
X終了中
修飾子
修飾子説明
<高優先度
N低優先度
Lメモリをロック中(RAM常駐)
s親プロセス(セッションリーダー)
lマルチスレッドプロセス(スレッドを持つ)
+フォアグランドプロセスグループに所属
修飾子無し

ps auxf

” ps aux ” の表示に加え、COMMAND列がツリー表示されます。

ps auxf1
ps auxf2

ps -ef

” ps aux ” と同じく全てのプロセスを表示するオプションですが、 ” ps aux ” に比べてヘッダー列の項目が少な目です。

ps -ef

各ヘッダー列の意味( ” ps aux ” と共通のものは省略しています)

ヘッダー列意味
UIDユーザー名( ” ps aux ” のUSERに相当)
PPID親プロセスのID
CCPU使用率
STIMEプロセス開始時間( ” ps aux ” のSTARTに相当)
CMDコマンド(引数)( ” ps aux ” のCOMMANDに相当)

pstree

pstreeコマンドはpsコマンドの関連コマンドで、プロセス間の親子関係をツリー表示します

pstree -p

” pstree ” のヘルプ画面

pstree --help

ウイルス・マルウェア発見の手掛かりとしての役割

自分の管理するマシンが挙動不審の疑いがある時、ウイルス・マルウェアの感染が疑われる時にpsコマンドはこれを発見する手掛かりになりえます。

もちろん決め手にまでは至りませんが

兆候

psコマンドでプロセス一覧を調べて、下記の不審点をチェックします。

注意点

psコマンドによる検知の限界として、下記の注意点があります。

精査の手段

下記のツールが精査手段となります。

まとめ

psコマンドは自分のマシン内で(特に見えない裏側で)何が行われているかを知るコマンドです。

また本来の使い方とは言えませんが、ウイルスやマルウェアを発見するきっかけになり得るコマンドです。

コメント

タイトルとURLをコピーしました