LinuCレベル1 101試験の例題と解説
1.01.4プロセスの生成、監視、終了
今回は、101試験の試験範囲から「1.01.4 プロセスの生成、監視、終了」についての例題を解いてみます。プロセスIDの調べ方について確認しておきましょう。
例題
rootユーザが実行しているupdatedbのプロセスIDを調べたい。
選択肢の中でプロセスIDを調べることのできないもの1つ選択してください。
- ps u -C updatedb
- pstree root
- ps -ef
- pgrep -u root updatedb
※この例題は実際の試験問題とは異なります。
解答と解説
正解は、「2. pstree root」です。
プロセスID(PID)とは、プロセスに割り当てられる固有の識別子です。
プロセスが開始したときに順番に割り当てられます。
プロセスには、プログラムの実行中に他のプロセスを起動するものがあります。その場合、元のプロセスを『親プロセス』、親プロセスから起動されたプロセスを『子プロセス』と呼びます。pstreeコマンドは、このようなプロセスの階層構造を分かりやすく表示することができるコマンドです。
pstreeコマンドの主なオプションは以下の通りです。
-a | …コマンドラインの引数も表示する |
-p | …プロセスIDを表示する |
-g | …グループIDを表示する |
-h | …現在のプロセスとその先祖のプロセスを強調表示する |
問題文にあるように、プロセスIDを表示するには、[-p]オプションが必要です。
よって、プロセスIDを調べることのできないコマンドは「2. pstree root」となります。
選択肢の解説は以下です。
[1. ps u -C updatedb]
プロセスIDを調べることができます。
psコマンドは、現在実行されているプロセスを表示するコマンドです。
psコマンドの主なオプションは以下の通りです。
a | … 他のユーザのプロセスも表示する |
f | … 親子関係をツリー状に表示する |
u | … ユーザ名も表示する |
x | … 制御端末のないデーモンなどのプロセスも表示する |
-e | … すべてのプロセスを表示する |
-f | … フルフォーマットで表示する |
-l | … 詳細な情報を表示する |
-C プロセス名 | … 指定した名前のプロセスのみを表示する |
選択肢のコマンドを実行すると以下のように表示されます。
$ ps u -C updatedb
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 11998 0.0 0.4 34552 4108 pts/0 T 09:27 0:00 updatedb
[2. pstree root]
プロセスIDを調べることができません。
pstreeでプロセスIDを表示するには、「-p」オプションを指定する必要があります。
選択肢のコマンドを実行すると以下のように表示されます。
$ pstree root
systemd―― NetworkManager ― 2*[{NetworkManager}]
|― agetty
|― auditd ― {auditd}
|― chronyd
|― crond
|― dbus-daemon ― {dbus-daemon}
|― firewalld ― {firewalld}
|― httpd ―― httpd(apache)
| |― 2*[httpd(apache)―64*[{httpd}]]
| |― httpd(apache)―80*[{httpd}]
(以下略)
[3. ps -ef]
プロセスIDを調べることができます。
psコマンドは、選択肢1の解説でも説明した通り、現在実行されているプロセスを表示するコマンドです。
選択肢のコマンドを実行すると以下のように表示されます。
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 4月15 ? 00:00:49 /usr/lib/systemd/systemd --switched-root --system --dese
root 2 0 0 4月15 ? 00:00:00 [kthreadd]
root 3 2 0 4月15 ? 00:00:00 [rcu_gp]
:
(略)
:
root 11998 11983 0 09:27 pts/0 00:00:00 updatedb
(以下略)
[4. pgrep -u root updatedb]
プロセスIDを調べることができます。
pgrepコマンドは、指定した名前のプロセスに対応するプロセスIDを表示するコマンドです。
pgrepコマンドの主なオプションは以下の通りです。
-u ユーザ名 | … プロセスの実行ユーザを指定する |
-g グループ名 | … プロセスの実行グループを指定する |
選択肢のコマンドを実行すると以下のように表示されます。
$ pgrep -u root updatedb
11998
プロセスIDは、特定のプロセスが異常な動作をしていたり、終了できなくなった場合に、プロセスを終了させる際にも使用します。
プロセスIDを調べる方法は複数あります。プロセスIDが必要な時、すぐに調べられるようにしておきましょう。
例題作成者
株式会社デージーネット OSS研究室 橋本知里