目次
psコマンドとは
| ps [オプション] |
psは、実行中プロセスのスナップショットを表示するコマンドです。
オプションを使用して必要な結果を取得します。
| コマンド | 意味 |
|---|---|
| ps | 自分の端末のプロセスを表示 |
| ps aux | 全体をよく見る定番 |
| ps -ef | UNIX形式で全プロセスを表示 |
| ps axf | プロセスをツリー表示 |
| ps -eo pid,ppid,user,stat,cmd | 表示項目を指定 |
| ps -p PID -f | 指定PIDを確認 |
プロセスを表示する(ps)
$ ps
PID TTY TIME CMD
2627 pts/0 00:00:00 bash
15176 pts/0 00:00:00 ps
PIDは、プロセスIDです。
TTYは端末を表します。コマンドを入力した自分の端末はpts/0となっています。
TIMEは、そのプロセスが実際にCPUを使った累積時間。
CMD コマンド名。bashと入力したpsが表示されています。
今ログインしている全ユーザーの端末プロセスを表示(ps a)
$ ps a
PID TTY STAT TIME COMMAND
1629 tty1 Ssl+ 0:00 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /run/
2627 pts/0 Ss 0:00 -bash
15493 pts/1 Ss 0:00 -bash
15555 pts/1 S+ 0:00 vim test3.txt
16010 pts/0 R+ 0:00 ps a
ps aは、6行目のように他の端末(pts/1)のユーザのプロセスを表示します。
7行目は、この端末で入力したpsコマンドです。
STATは、プロセスの状態です。Sはスリープ状態、Rは実行可能状態等を表します。
セッションリーダーや端末を持たないプロセスを除外して表示(ps -a)
$ ps -a
PID TTY TIME CMD
15555 pts/1 00:00:00 vim
16295 pts/0 00:00:00 ps
ps aとps -aは意味が異なります。Linuxのpsは、ハイフンあり/なしでオプション体系が変わります。
セッションリーダー・・・端末を束ねる親分的プロセス
プロセスの環境変数を表示する(ps e)
$ ps e
PID TTY STAT TIME COMMAND
2627 pts/0 Ss 0:00 -bash USER=test LOGNAME=test HOME=/home/test PATH=/usr/local/bin:/usr
15493 pts/1 Ss 0:00 -bash USER=test LOGNAME=test HOME=/home/test PATH=/usr/local/bin:/usr
15555 pts/1 S+ 0:00 vim test3.txt XDG_SESSION_ID=22 HOSTNAME=localhost TERM=xterm SHELL=/
16980 pts/0 R+ 0:00 ps e XDG_SESSION_ID=1 HOSTNAME=localhost TERM=xterm SHELL=/bin/bash H
ps eは、環境変数まで表示します。
ただし、上記の環境変数は途中で途切れてしまっています。
3行目は、PATH=/usr/local/bin:/usrまでしか表示されていません。
ps eは環境変数を表示するため、パスワード、トークン、接続情報などが見える場合があります。共有端末やログ取得時は注意します。
psコマンドの出力結果の表示領域を増やす(ps ew)
$ ps ew
PID TTY STAT TIME COMMAND
2627 pts/0 Ss 0:00 -bash USER=test LOGNAME=test HOME=/home/test PATH=/usr/local/bin:/usr/bin MAIL=/var/mail/test SHELL=/bin
15493 pts/1 Ss 0:00 -bash USER=test LOGNAME=test HOME=/home/test PATH=/usr/local/bin:/usr/bin MAIL=/var/mail/test SHELL=/bin
15555 pts/1 S+ 0:00 vim test3.txt XDG_SESSION_ID=22 HOSTNAME=localhost TERM=xterm SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=1
17717 pts/0 R+ 0:00 ps ew XDG_SESSION_ID=1 HOSTNAME=localhost TERM=xterm SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=192.168.15
wは表示幅を広げます。さらに長く表示したい場合は、以下のようにwwを使うことがあります。
ps eww
ps auxww
CPUとメモリの使用率も表示する(ps u)
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
test 2627 0.0 0.2 116604 2124 pts/0 Ss 17:35 0:00 -bash
test 15493 0.0 0.3 116712 3160 pts/1 Ss 20:22 0:00 -bash
test 15555 0.0 0.5 149472 5068 pts/1 S+ 20:22 0:00 vim test3.txt
test 18318 0.0 0.1 155448 1876 pts/0 R+ 20:59 0:00 ps u
ps uでCPU使用率とメモリ使用率が表示されます。
全てのプロセスを表示する(ps ax)
$ ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
2 ? S 0:00 [kthreadd]
4 ? S< 0:00 [kworker/0:0H]
以下省略
ps axにCPU使用率とメモリ使用率を表示するuを追加したps auxがよく使用されます。
プロセスを絞る場合はパイプ(|)とgrep を追加します。
パイプは左側のコマンドの結果を右側に繋げます。
例:ps aux | grep 2050
プロセスを階層構造で表示する(ps axf)
$ ps axf

fオプションは、プロセスを階層構造で表示します。
親プロセスも表示する(ps l(小文字のエル))
$ ps l
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
0 1000 2627 2624 20 0 116604 2124 do_wai Ss pts/0 0:00 -bash
0 1000 15493 15492 20 0 116712 3160 do_wai Ss pts/1 0:00 -bash
0 1000 15555 15493 20 0 149472 5068 poll_s S+ pts/1 0:00 vim test3.txt
0 1000 20918 2627 20 0 153324 1524 - R+ pts/0 0:00 ps l
l(小文字のエル)は、親プロセス(PPID)も表示します。
関連の記事
