Infra Engineer

プロセスの稼働状況を表示 ~psコマンド~
2021.08.31
Lv1

プロセスの稼働状況を表示 ~psコマンド~

本記事の対象者

LPIC level1習得を目指す初学者の方
コマンドの基本的な用途について、要点を絞って解説します。


今回の内容

今回は、psコマンドについて解説します。プロセスがちゃんと立ち上がっているか確認したり、動作不良の原因を突き止めたり、不要なプロセスが起動していないか監視したりなど様々な用途があります。

ps
まとめ
確認問題


ps

「ps」コマンドは、プロセスの稼働状況の確認に使用します。
プロセスとはメモリ上で実行中のひとつひとつのプログラムのことです。プロセスには固有のPIDが割り振られます。
lsコマンドを実行すれば、lsコマンドのプロセスが起動します。ひとつのコマンドに対して立ち上がるプロセスはひとつとは限りません。ユーザー側から見た一行のコマンドの実行単位は「ジョブ」と表現されますが、ひとつのジョブの中に複数のプロセスが含まれていることもあるということです。
思ったようにジョブが実行されていないとき、動作が緩慢になってしまっている時などはこの「プロセス」を確認することで解決の手がかりが見つかることもあります。
プロセスそのものについてはこちらを参考にしてください。

psコマンド
意味 現在実行されているプロセスを確認する
書式 ps[オプション]

主なオプションは以下です。psコマンドは、「-」のあるオプションとないオプションがありますが、Linuxでは「-」をつけないオプションが推奨されます。

オプション 説明
a 他のユーザーのプロセスも表示する。
f プロセスを親子関係を明らかにしながら階層表示する。
u ユーザー名も表示する。
x 制御端末のない、デーモンなどのプロセスも表示する。
-e すべてのプロセスを表示する。
-l 詳細な情報を表示する。
例)
プロセスの詳細情報を表示
[user@localhost ~]# ps -l
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000    1426    1425  0  80   0 -  3009 do_wai pts/0    00:00:00 bash
0 T  1000    2280    1426  0  80   0 -  3225 do_sig pts/0    00:00:00 top
0 R  1000    2380    1426  0  80   0 -  3110 -      pts/0    00:00:00 ps
[user@localhost ~]# kill -9 1426
[1] + Killed                     top
[user@localhost ~]# ps -l
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000    1426    1425  0  80   0 -  3009 do_wai pts/0    00:00:00 bash
0 R  1000    2380    1426  0  80   0 -  3110 -      pts/0    00:00:00 ps

psコマンドでtopコマンドによるプロセスが立ち上がっていることを確認し、killコマンドによってプロセスを終了させました。

なお、各項目の意味は以下です。
試験ではすべての項目についての理解が求められるわけではありません。

項目名 意味
UID 起動ユーザーID
PID プロセスID(プロセスごとに固有)
PPID 親プロセスID
C CPU使用率
PRI プロセスの優先度
NI プロセスの優先度を表すNice値
TTY 起動したTTY端末
TIME コマンドの実行時間
CMD コマンド名
例)
ほかのユーザーのプロセスも合わせてユーザー名つきで表示(-au)


例)
親子関係をツリー上に表示(f)
[user@localhost ~]# ps xf
    PID TTY      STAT   TIME COMMAND
   1705 pts/0    S      0:00 su root
   1706 pts/0    S      0:00  \_ bash
   1761 pts/0    R+     0:00      \_ ps f
...(略)
[user@localhost ~]# pstree
systemdqwqModemManagerqqq2*[{ModemManager}]
        tqNetworkManagerqqq2*[{NetworkManager}]
        tqaccounts-daemonqqq2*[{accounts-daemon}]
        tqacpid
        tqavahi-daemonqqqavahi-daemon
        tqcolordqqq2*[{colord}]
        tqcron
        tqcups-browsedqqq2*[{cups-browsed}]
        tqcupsdqqqdbus
        tqdbus-daemon
        tqgdm3qwqgdm-session-worqwqgdm-x-sessionqwqXorgqqq{Xorg}
...(略)

ツリー形式でプロセス一覧を表示します。「pstree」コマンドも同様の働きをします。


まとめ

今回は、稼働中のプロセスを表示する「ps」コマンドを解説しました。
プロセスの稼働状況の把握は、実務でも非常に使う機会が多いので、使い方をしっかり理解しておきましょう。
プロセス確認の別のコマンドとして「tree」コマンドもありますので、確認してください。

最後に確認問題で今回学習した内容を是非確かめてください。


確認問題

問題

システムで実行されているすべてのプロセスを一覧表示するコマンドはどれか。

A) ps aux
B) pstree
C) ps fx
D) ps -l

解答・解説
答え:A

A) ⇒ 正解です。オプションの並びは、必ずしもこのとおりである必要はありません。
B) ⇒ ps fx と同様に、プロセスをツリー上に表示するコマンドです。
C) ⇒ 「f」はプロセスをツリー上に表示するオプションです。
D) ⇒ 「-l」は、詳細な情報を表示するためのオプションです。