Linuxのpsコマンドの使い方とは?実行中のプロセスを表示する方法についてまとめました。
- psコマンドの使い方
- 【使用例】「ps ax」もしくは「ps -ef」で実行中の全てのプロセスを表示
- 【使用例】「ps aux」で全てのユーザーの全てのプロセスを表示
- 【使用例】「ps aux | grep」で実行中の特定のプロセスを確認
- 【使用例】「ps axf」もしくは「pstree」コマンドでプロセスの親子関係をツリー状で表示
- 【使用例】「ps -p 」もしくは「ps p」で特定のプロセスIDの情報のみ表示
- 【使用例】「ps -l」もしくは「ps l」で親プロセスのPID、実行優先度(nice値)なども併せて表示
- 【使用例】「ps -ef」で完全なフォーマットで全てのプロセスを表示
- 【使用例】「ps u」でプロセスの実行ユーザ名も表示
- 【使用例】実行中のhttpdのプロセスを全て表示
- 関連記事
psコマンドの使い方
psコマンドは、実行中のプロセスを表示します。
ps [オプション] [プロセスID]
オプション | 概要 |
---|---|
a | 全てのユーザーのプロセスを表示 |
f | プロセスをツリー形式で表示 |
r | 実行中のプロセス情報のみ表示 |
u | 各プロセスの実行ユーザーやCPU、メモリ等の情報も表示 |
x | 全制御端末のプロセスを表示(制御端末のないデーモンのようなプロセス情報も表示) |
-e | 全てのプロセスを表示 |
-f | 完全なフォーマットで表示 |
-l | 標準の「PID、TTY、TIME、CMD」と「F、S、UID、PPID、C、PRI、NI、ADDR、SZ、VSZ、RSS、WCHAN、STAT」を表示 |
-p PID | 特定のPIDのプロセス情報のみ表示 |
-C プロセス名 | 指定した名前のプロセス情報のみ表示 |
-w | 行を追加して表示(wを複数書くと、その数だけ行も増加) |
o, -o | 出力形式を指定 |
実行結果に表示されるフィールドの概要は以下のとおり。
フィールド | 概要 |
---|---|
F | プロセスの状態(16進数)。00:プロセスが終了状態、01:システム・プロセス(常にメモリー上に存在)の状態、 02:親プロセスからトレースされている状態、04:親プロセスからトレースされて停止状態、08:プロセスがシグナルで起動できない状態、10:プロセスがメモリー上にあるため、イベント終了までロックされている状態、20:プロセスがスワップできない状態 |
UID | プロセスを実行しているユーザーID |
PID | プロセスID |
PPID | 現在のプロセスの親プロセスID |
PRI | 優先度 |
NI | ナイス値(優先順位) |
VSZ | 仮想メモリの全サイズ |
RSS | 使用中の物理メモリー量 |
WCHAN | プロセスが休眠状態の時のカーネル関数名 |
STAT/S | プロセスのステータス。R:実行可能、S:停止、D:割り込み不可の停止、T:停止またはトレース中、Z:ゾンビ・プロセス、W:スワップ・アウトしたプロセス、N:ナイス値が正 |
TTY | 制御端末の種類および番号(どの端末から起動されたかを示す) |
TIME | プロセスが開始した時刻 |
COMMAND/CMD | プロセスのコマンド名 |
【使用例】「ps ax」もしくは「ps -ef」で実行中の全てのプロセスを表示
「ps ax」もしくは「ps -ef」で実行中の全てのプロセスを表示します。
$ ps ax PID TT STAT TIME COMMAND 1 ?? Ss 14:25.92 /sbin/launchd 314 ?? Ss 3:21.36 /usr/libexec/logd 316 ?? Ss 0:08.14 /usr/libexec/UserEventAgent (System)
$ ps -ef UID PID PPID C STIME TTY TIME CMD 0 1 0 0 水01PM ?? 14:22.33 /sbin/launchd 0 314 1 0 水01PM ?? 3:20.53 /usr/libexec/logd 0 316 1 0 水01PM ?? 0:08.12 /usr/libexec/UserEventAgent (System) 0 318 1 0 水01PM ?? 0:01.31
【使用例】「ps aux」で全てのユーザーの全てのプロセスを表示
「ps aux」は、全てのユーザーの全てのプロセスを表示します。
a, u, xオプションの機能は以下のとおり
a: 全てのユーザーのプロセスを表示
u: 各プロセスの実行ユーザーやCPU、メモリ等の情報も表示
x: 全制御端末のプロセスを表示(制御端末のないデーモンのようなプロセス情報も表示)
$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.2 166928 10068 ? Ss 22:32 0:02 /sbin/init splash root 2 0.0 0.0 0 0 ? S 22:32 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 22:32 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< 22:32 0:00 [rcu_par_gp] root 5 0.0 0.0 0 0 ? I< 22:32 0:00 [slub_flushwq] root 6 0.0 0.0 0 0 ? I< 22:32 0:00 [netns] (略)
項目 | 内容 |
---|---|
USER | プロセスの所有ユーザー |
PID | プロセス番号 |
&CPU | CPU占有率 |
&MEM | 実メモリ占有率 |
SIZE | 仮想分も含めたメモリの使用量(KB) |
RSS | 実メモリ上の使用量(KB) |
TTY | 端末名 |
STAT | プロセスの状態 |
R | 稼動中 |
S | 一時停止中 |
D | 停止不可能で一時停止 |
T | 終了処理中 |
Z | ゾンビプロセス(実体が無いプロセス) |
W | 実メモリ上に無く、スワップアウトしている |
N | nice値 |
START | プロセスの開始時刻 |
TIME | プロセスの総実行時間 |
COMMAND | 実行コマンド名とパス |
【使用例】「ps aux | grep」で実行中の特定のプロセスを確認
稼働中のプロセスの確認をする際によく使用されるのが「ps aux|grep プロセス名」というコマンドです。
検索したいプロセス名を入れて実行すると、そのプロセスが稼働しているかを確認できます。
【使用例】「ps axf」もしくは「pstree」コマンドでプロセスの親子関係をツリー状で表示
「ps axf」で実行中の全てのプロセスの親子関係をツリー状で表示します。
sv1@sv1:~$ ps axf PID TTY STAT TIME COMMAND 2 ? S 0:01 [kthreadd] 3 ? I< 0:00 \_ [rcu_gp] 4 ? I< 0:00 \_ [rcu_par_gp] 5 ? I< 0:00 \_ [slub_flushwq] 6 ? I< 0:00 \_ [netns] 8 ? I< 0:01 \_ [kworker/0:0H-kblockd] 11 ? I< 0:00 \_ [mm_percpu_wq]
「pstree」コマンドでもプロセスの親子関係をツリー状で表示できます。ただし、表示形式は異なります。
sv1@sv1:~$ pstree systemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager───2*[{NetworkManager}] ├─accounts-daemon───2*[{accounts-daemon}] ├─acpid ├─apache2───8*[apache2] ├─at-spi-bus-laun─┬─dbus-daemon
【使用例】「ps -p 」もしくは「ps p」で特定のプロセスIDの情報のみ表示
プロセスIDが123のプロセスのみの情報を表示したい場合、以下のいずれかのコマンドを実行します。
$ ps -p 123 $ ps p 123
【使用例】「ps -l」もしくは「ps l」で親プロセスのPID、実行優先度(nice値)なども併せて表示
「ps -l」もしくは「ps l」で親プロセスのPID、実行優先度(nice値)なども併せて表示したい場合、以下のいずれかのコマンドを実行します。
$ ps -l UID PID PPID F CPU PRI NI SZ RSS WCHAN S ADDR TTY TIME CMD 501 55466 55465 34006 0 31 0 34420840 3416 - S 0 ttys001 0:00.06 -zsh
$ ps l UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME COMMAND 501 55466 55465 0 31 0 34420840 3636 - S s001 0:00.06 -zsh
【使用例】「ps -ef」で完全なフォーマットで全てのプロセスを表示
「ps -ef」で完全なフォーマットで全てのプロセスを表示します。
$ ps -ef UID PID PPID C STIME TTY TIME CMD 0 1 0 0 水01PM ?? 28:33.56 /sbin/launchd 0 314 1 0 水01PM ?? 6:48.66 /usr/libexec/logd 0 316 1 0 水01PM ?? 0:15.75 /usr/libexec/UserEventAgent (System)
【使用例】「ps u」でプロセスの実行ユーザ名も表示
「ps u」でプロセスの実行ユーザ名も表示します。
$ ps u USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND user01 55466 0.0 0.0 34429032 3588 s001 S 1:45PM 0:00.07 -z
【使用例】実行中のhttpdのプロセスを全て表示
現在実行中のhttpdのプロセスを全て表示するには、以下のいずれかのコマンドを使います。
$ ps ax | grep httpd | grep -v grep
単に「ps ax | grep httpd」を実行すると、検索のために実行したコマンドまで検索対象に含まれるため、抽出結果が1つ多くなります。
そのため、さらにパイプで「grep -v grep」を通すことで、grepを含むもの(検索のために実行したコマンド)を除外します。
$ pgrep httpd
pgrepコマンドは、実行中のプロセスから特定の名前を持つプロセスIDを検索できます(検索対象から自身は除外)。
コメント