ps コマンドでよく使うオプションのメモ。
ps コマンドでわりとよく使うオプションのメモ。
普段は AWS の EC2 インスタンスに入って使うことが多いのでこのエントリーを書くときも EC2 インスタンスに入って ps コマンドを実行した結果とかをメモっている。
ps コマンドのバージョン。
$ ps --version procps-ng version 3.3.10
ps コマンドのオプション
ps コマンドはプロセスの情報を表示するコマンド。
自分はなんとなく使うことが多い気がするのでよく使うオプションをメモしておく。
--help オプション: ヘルプ
--help
オプションを指定すると ps コマンドの使い方を表示する……んだけど man ps
が使えないときにしか使わない。
$ ps --help all Usage: ps [options] Basic options: -A, -e all processes -a all with tty, except session leaders a all with tty, including other users -d all except session leaders -N, --deselect negate selection r only running processes T all processes on this terminal x processes without controlling ttys # 省略
--no-header オプション: ヘッダーを表示しない
--no-header
オプションを指定するとヘッダーを表示しない。
オプションなしの ps
は PID
とか TTY
とかヘッダーを表示するけど、
$ ps PID TTY TIME CMD 3288 pts/0 00:00:00 bash 22180 pts/0 00:00:00 ps
--no-header
オプションを指定すると PID
とか TTY
とかのヘッダーを表示しない。
$ ps --no-header 3288 pts/0 00:00:00 bash 22180 pts/0 00:00:00 ps
u オプション: プロセスの詳細情報を表示
u
オプションを指定するとプロセスの詳細情報を表示する。
$ ps u USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ec2-user 3288 0.0 0.3 125068 4004 pts/0 Ss 14:01 0:00 -bash ec2-user 22117 0.0 0.4 124992 4140 pts/1 Ss 14:02 0:00 -bash ec2-user 22199 0.0 0.3 126116 3524 pts/1 S+ 14:15 0:00 man ps ec2-user 22210 0.0 0.2 117300 2624 pts/1 S+ 14:15 0:00 less -s ec2-user 25636 0.0 0.4 164368 4060 pts/0 R+ 14:37 0:00 ps u
-f オプション: プロセスの情報を完全なフォーマットで表示
-f
オプションを指定するとプロセスの情報を完全なフォーマットで表示する。
親子関係のプロセスをツリー表示してくれる。
$ ps -fu USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ec2-user 22117 0.0 0.4 124992 4140 pts/1 Ss 14:02 0:00 -bash ec2-user 22199 0.0 0.3 126116 3524 pts/1 S+ 14:15 0:00 \_ man ps ec2-user 22210 0.0 0.2 117300 2624 pts/1 S+ 14:15 0:00 \_ less -s ec2-user 3288 0.0 0.3 125068 4004 pts/0 Ss 14:01 0:00 -bash ec2-user 25649 0.0 0.4 164368 4084 pts/0 R+ 14:40 0:00 \_ ps -fu
e オプション: 環境変数を表示
e
オプションを指定すると COMMAND
カラムのコマンドの表示のあとにプロセスの環境変数を表示する。
$ ps e PID TTY STAT TIME COMMAND 3288 pts/0 Ss 0:00 -bash LC_ALL=ja_JP.UTF-8 22117 pts/1 Ss 0:00 -bash LC_ALL=ja_JP.UTF-8
-L オプション: プロセスとスレッドを表示
-L
オプションを指定するとプロセスとスレッドを表示する。
ps -C dockerd
すると dockerd のプロセスは1つだけ表示するけど、
$ ps -C dockerd PID TTY TIME CMD 885 ? 00:00:04 dockerd
-L
オプションを追加するとたくさん表示する。
増えた表示の分がスレッド。
スレッドはたくさん表示するけど PID
は全部同じなので表示しているスレッドが同じプロセスのスレッドであることが分かる。
スレッド ID はLWP
のところに表示する。
$ ps -L -C dockerd PID LWP TTY TIME CMD 885 885 ? 00:00:00 dockerd 885 981 ? 00:00:00 dockerd 885 982 ? 00:00:00 dockerd 885 983 ? 00:00:00 dockerd 885 984 ? 00:00:00 dockerd # 省略
-A, -e オプション: すべてのプロセスを表示
-A
オプションか -e
オプションを指定するとすべてのプロセスを表示する。
man ページの -A
オプションの説明のところは select all processes. Identical to -e
と書いてあって -A
オプションと -e
オプションはまったく同じ。
オプションなしの ps
はちょっとしかプロセスを表示しないけど、
$ ps PID TTY TIME CMD 3288 pts/0 00:00:00 bash 22180 pts/0 00:00:00 ps
ps -e
するとプロセスがたくさん表示される。
$ ps -e PID TTY TIME CMD 1 ? 00:00:01 systemd 2 ? 00:00:00 kthreadd 4 ? 00:00:00 kworker/0:0H 5 ? 00:00:00 kworker/u30:0 6 ? 00:00:00 mm_percpu_wq 7 ? 00:00:00 ksoftirqd/0 8 ? 00:00:00 rcu_sched
a オプション: 端末を持つプロセスを表示
a
オプションを指定すると端末を持つすべてのプロセスを表示する。
端末を持つプロセスであれば他のユーザーのプロセスも表示する。
a
オプションを指定すると表示されるプロセスは当然のことながら端末を持っているので TTY
のところが tty
とか pts
みたいになる。
x
オプションと組み合わせて使うことが多い => x
オプション参照
$ ps a PID TTY STAT TIME COMMAND 3202 tty1 Ss+ 0:00 /sbin/agetty --noclear tty1 linux 3203 ttyS0 Ss+ 0:00 /sbin/agetty --keep-baud 115200,38400,9600 ttyS0 vt220 3288 pts/0 Ss 0:00 -bash 22117 pts/1 Ss 0:00 -bash 22160 pts/1 S+ 0:00 man ps 22171 pts/1 S+ 0:00 less -s 22196 pts/0 R+ 0:00 ps a
x オプション: 端末を持たないプロセスを表示
x
オプションを指定すると端末を持たないすべてのプロセスを表示する。
$ ps x PID TTY STAT TIME COMMAND 3287 ? S 0:00 sshd: ec2-user@pts/0 3288 pts/0 Ss 0:00 -bash 22116 ? S 0:00 sshd: ec2-user@pts/1 22117 pts/1 Ss 0:00 -bash 22199 pts/1 S+ 0:00 man ps 22210 pts/1 S+ 0:00 less -s 25561 pts/0 R+ 0:00 ps x
x
オプションと a
オプションを組み合わせると端末を持たないプロセスと端末を持つプロセスを表示するので表示するプロセスの数は -e
オプションを指定するときと同じになる。
=> 表示するときのカラムが違うとかの相違がある
$ ps -e | wc -l 90 $ ps ax | wc -l 90
r オプション: 実行中のプロセスだけ表示
r
オプションを指定すると実行中もしくは実行可能状態のプロセスだけ表示する。
ps u
すると何個かのプロセスが表示するけど、
$ ps u USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ec2-user 3288 0.0 0.3 125068 4004 pts/0 Ss 14:01 0:00 -bash ec2-user 22117 0.0 0.4 124992 4140 pts/1 Ss 14:02 0:00 -bash ec2-user 22199 0.0 0.3 126116 3524 pts/1 S+ 14:15 0:00 man ps ec2-user 22210 0.0 0.2 117300 2624 pts/1 S+ 14:15 0:00 less -s ec2-user 25631 0.0 0.3 164368 3940 pts/0 R+ 14:30 0:00 ps u
r
オプションを追加して ps ru
すると STAT
が R
(R+
) のプロセスだけ表示する。
$ ps ru USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ec2-user 25633 0.0 0.3 164368 4008 pts/0 R+ 14:30 0:00 ps ru
-C オプション: 実行ファイル名を指定して表示
-C
オプションで実行ファイル名を指定すると指定した実行ファイルのプロセスだけ表示する。
ps u
すると何個かのプロセスが表示するけど、
$ ps u USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ec2-user 3288 0.0 0.4 125068 4168 pts/0 Ss 14:01 0:00 -bash ec2-user 22117 0.0 0.4 124992 4140 pts/1 Ss 14:02 0:00 -bash ec2-user 22199 0.0 0.3 126116 3524 pts/1 S+ 14:15 0:00 man ps ec2-user 22210 0.0 0.2 117300 2624 pts/1 S+ 14:15 0:00 less -s ec2-user 25758 0.0 0.4 164368 4064 pts/0 R+ 15:07 0:00 ps u
-C
オプションで -C bash
みたいに指定すると bash だけ表示する。
$ ps u -C bash USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ec2-user 3288 0.0 0.4 125068 4168 pts/0 Ss 14:01 0:00 -bash ec2-user 22117 0.0 0.4 124992 4140 pts/1 Ss 14:02 0:00 -bash
ps コマンドのオプションでちょっと気にしておくこと
ps コマンドのバージョンによってはいくつかのオプション形式に対応している。
e
オプション (環境変数を表示) と -e
オプション (すべてのプロセスを表示) みたいに -
があるかないかでまったく意味が違うオプションがある。
This version of ps accepts several kinds of options: 1 UNIX options, which may be grouped and must be preceded by a dash. 2 BSD options, which may be grouped and must not be used with a dash. 3 GNU long options, which are preceded by two dashes.