LinuCレベル1 101試験の例題と解説

1.01.4プロセスの生成、監視、終了

今回は、LinuCレベル1 101試験の出題範囲から「1.01.4 プロセスの生成、監視、終了」についての例題を解いてみます。
ここでは、psコマンドのオプションの意味について確認していきましょう。

Linucレベル1 101試験 出題範囲


例題

psコマンドのオプションの説明について、誤っているものを1つ選択してください。

  1. "ps -A"と"ps -e"は実行すると、全てのプロセスを表示することができる
  2. "ps e"を実行すると、コマンド名と環境変数を表示することができる
  3. "ps -f"を実行すると、実行されているプロセスの階層を表示することができる
  4. "ps -p"を実行すると、指定したプロセスのみを表示することができる

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「3. "ps -f"を実行すると、実行されているプロセスの階層を表示することができる」です。

psコマンドは、プロセスの情報を表示することができるコマンドです。さまざまなオプションを使用して表示される情報を詳細化することができます。

psコマンドの書式は以下の通りです。

ps [オプション]

psコマンドを実行すると以下のように、現在実行中のプロセスが出力されます。

$ ps
    PID TTY          TIME CMD
   1939 pts/0    00:00:00 bash

各列の意味は以下の通りです。

PIDプロセスID。プロセスを一意に識別するための数値です。
TTYプロセスが実行されている端末(TTY)です。
TIMEプロセスが実行されているCPU時間です。"hh:mm:ss"の形式で表示されます。
CMDプロセスのコマンドライン(コマンド名およびその引数)です。

psコマンドのオプションには、3つの種類があります。

UNIXオプションオプションをグループ化することができる、ハイフンが必要(例: -e)
BSDオプションオプションをグループ化することができる、ハイフンが不要(例: e)
GNUロングオプション2つのハイフンが必要(例: --sort)

異なるタイプのオプションも一緒に使用できますが、競合が発生する場合もあります。

また、機能的に同一の意味を持つオプションが複数あったり、同じオプションでもタイプが違うと意味が異なるものもあったりします。

オプションのタイプと意味を正しく覚えておきましょう。

主なオプションをタイプ別に紹介します。

[UNIXオプション]

-A全てのプロセスを表示する(-eと同意)
-e全てのプロセスを表示する(-Aと同意)
-fUIDやPID,PPID等プロセスの詳細なリストをフルフォーマットで表示する
-C <プロセス名>指定した名前のプロセスのみを表示する
-p <プロセスID>指定したIDのプロセスのみを表示する

[BSDオプション]

a端末(TTY)を持つ全てのプロセスを表示する
x端末(TTY)を持たない全てのプロセスを表示する
eコマンド名と環境変数を表示する
f実行されているプロセスの階層表示する

[GNUロングオプション]

--no-headersヘッダー行を非表示にする
--sort結果を並び替えて表示する

psコマンドでは、オプションを組み合わせて使うことが多くあります。例えば、"-e"と"-f"オプションを組み合わせることで、システム上のすべてのプロセスを詳細に表示することができます。

$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jan01 ?        00:00:01 /sbin/init
root         2     0  0 Jan01 ?        00:00:00 [kthreadd]
root         3     2  0 Jan01 ?        00:00:00 [rcu_gp]
root         4     2  0 Jan01 ?        00:00:00 [rcu_par_gp]
:

選択肢の解説は以下です。

1."ps -A"と"ps -e"は実行すると、全てのプロセスを表示することができる
"-A"と"-e"の正しい説明です。

実際に実行すると以下のように、全てのプロセスが表示されます。
-eオプションでも同じ結果になります。

$ ps -A
PID TTY          TIME CMD
    1 ?        00:00:01 systemd
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 ksoftirqd/0
    5 ?        00:00:00 kworker/0:0H
    7 ?        00:00:00 rcu_sched
    8 ?        00:00:00 migration/0
    9 ?        00:00:00 watchdog/0
   10 ?        00:00:00 watchdog/1
:

2."ps e"を実行すると、コマンド名と環境変数を表示することができる
"e"オプションの正しい説明です。

実際に実行すると以下のように、「COMMAND」の列にコマンド名や環境変数が表示されます。

$ ps e
    PID TTY      STAT   TIME COMMAND
   3294 pts/0    S      0:00 bash SHELL=/bin/bash HISTCONTROL=ignoredups HISTSIZE=1000 HOSTNAME=xxx … HOME=/home/xxx LANG=C.UTF-8 LS_COLORS=rs=0:di=01;34:ln=01;36:mh

3."ps -f"を実行すると、実行されているプロセスの階層を表示することができる
"-f"オプションの説明ではありません。よって、正解です。

"-f"は、UIDやPID,PPID等プロセスの詳細なリストをフルフォーマットで表示することができるオプションになります。
実際に実行すると以下のように表示されます。

$ ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jan01 ?        00:00:01 /sbin/init
root         2     0  0 Jan01 ?        00:00:00 [kthreadd]
root         3     2  0 Jan01 ?        00:00:00 [rcu_gp]
:

実行されているプロセスの階層を表示することができるのは、"f"オプションです。
「COMMAND」の列に、階層が表示されます。

$ ps f
    PID TTY      STAT   TIME COMMAND
   3294 pts/0    S      0:00 bash
   3363 pts/0    R+     0:00  \_ ps f
:

4."ps -p"を実行すると、指定したIDのプロセスのみを表示することができる
"-p"オプションの正しい説明です。

実際に実行すると以下のように表示されます。

$ ps -p 3294
    PID TTY          TIME CMD
   3294 pts/0    00:00:00 bash

今回は、psコマンドのオプションの意味について確認しました。プロセス管理を行う際にpsコマンドはよく使用されます。
オプションの意味や使い方について正しく理解しておきましょう。


例題作成者

株式会社デージーネット 経営企画室営業SEチーム 宮本 郁実

ページトップへ