助け合いフォーラム
LinuC Lv1-101(Ver10.0)
問題ID : 39108
問題を開く
以下のコマンド名で実行されている全てのプロセスを終了したい。適切なコマンドは次のうちどれか。
mycommand
mycommand2
mycommand3
mycommand
mycommand2
mycommand3
正解
pkill mycommand
解説
プロセスにシグナルを送ることでプロセスを終了させたり、再起動させることができます。
プロセス名を拡張正規表現で指定してシグナルを送るには、pkillコマンドを使用します。
pkillコマンドの書式と主なシグナル名およびシグナル番号は以下のとおりです。
pkill [-シグナル名または-シグナル番号] プロセス名(コマンド名)
または
pkill --signal [-シグナル名または-シグナル番号] プロセス名(コマンド名)

TERM(SIGTERM)シグナルは、プロセスが開いているファイルを閉じるなどの作業(クリーンアップ)を行ってからプロセスを終了します。
なお、killall、pkill(およびkill)コマンドでシグナルを指定しない場合は、デフォルトでこのシグナルが使用されます。
したがって正解は
・pkill mycommand
です。
以下は「pkill mycommand」を実行し、コマンドmycommand、mycommand2、mycommand3のプロセスが終了している例です。

その他の選択肢については次のとおりです。
・killall mycommand*
killallコマンドは指定したコマンドを実行している全てのプロセスに対してシグナルを送るコマンドです。
正確なコマンド名を入力する必要がありますので「*」による指定はできません。よって、誤りです。
・kill mycommand*
killコマンドはプロセスID(PID)を使用してプロセスにシグナルを送るコマンドです。
コマンド名やプロセス名の指定はできませんので、誤りです。
・killcmd mycommand
・pkillall mycommand
このようなコマンドは存在しませんので、誤りです。
プロセス名を拡張正規表現で指定してシグナルを送るには、pkillコマンドを使用します。
pkillコマンドの書式と主なシグナル名およびシグナル番号は以下のとおりです。
pkill [-シグナル名または-シグナル番号] プロセス名(コマンド名)
または
pkill --signal [-シグナル名または-シグナル番号] プロセス名(コマンド名)

TERM(SIGTERM)シグナルは、プロセスが開いているファイルを閉じるなどの作業(クリーンアップ)を行ってからプロセスを終了します。
なお、killall、pkill(およびkill)コマンドでシグナルを指定しない場合は、デフォルトでこのシグナルが使用されます。
したがって正解は
・pkill mycommand
です。
以下は「pkill mycommand」を実行し、コマンドmycommand、mycommand2、mycommand3のプロセスが終了している例です。

その他の選択肢については次のとおりです。
・killall mycommand*
killallコマンドは指定したコマンドを実行している全てのプロセスに対してシグナルを送るコマンドです。
正確なコマンド名を入力する必要がありますので「*」による指定はできません。よって、誤りです。
・kill mycommand*
killコマンドはプロセスID(PID)を使用してプロセスにシグナルを送るコマンドです。
コマンド名やプロセス名の指定はできませんので、誤りです。
・killcmd mycommand
・pkillall mycommand
このようなコマンドは存在しませんので、誤りです。
参考
プロセスとは、システム上で動作しているプログラムの最小単位のことです。PID(プロセスID)およびプロセス名(コマンド名)はpsコマンドで調べることができます。

また、pgrepコマンドで実行中のプロセスから特定の名前を持つプロセスIDを検索することができます。
pgrepコマンドの書式は以下のとおりです。
pgrep [ オプション ] 検索パターン
実行例:

検索パターンには拡張正規表現が指定できます。-lオプションを使うと、検索パターンにマッチしたプロセス名も表示されます。

-uオプションを使うと、特定のユーザーが実行したプロセスのみを検索対象とすることができます。
例)

kill、killall、pkillコマンドで、プロセスに終了や再起動などのシグナル(命令)を送ることができます。kill、killall、pkillコマンドの書式と主なシグナル名およびシグナル番号は以下のとおりです。
kill [-シグナル名または-シグナル番号] プロセスID
または
kill -s [シグナル名またはシグナル番号] プロセスID
killall [-シグナル名または-シグナル番号] プロセス名(コマンド名)
または
killall -s [シグナル名またはシグナル番号] プロセス名(コマンド名)
pkill [-シグナル名または-シグナル番号] プロセス名(コマンド名)
または
pkill --signal [-シグナル名または-シグナル番号] プロセス名(コマンド名)

killコマンドはプロセスID(PID)を使用して単一のプロセスにシグナルを送りますが、killallコマンドはプロセス名(コマンド名)を使用して、同じプロセス名の全てのプロセスに対してシグナルを送ります。
例) kill -SIGHUP 1133
例) killall -SIGHUP mycommand
また、pkillコマンド、もしくはkillallの-rオプションを使うことで、プロセス名を拡張正規表現で指定してシグナルを送ることができます。
例)

また、killコマンドはジョブ番号を指定し、ジョブにシグナルを送る事もできます。ジョブ番号は「%ジョブ番号」と指定します。
例) kill %2
ジョブ番号はjobsコマンドで確認することができます。先頭の[ ]内の数値がジョブ番号です。

また、pgrepコマンドで実行中のプロセスから特定の名前を持つプロセスIDを検索することができます。
pgrepコマンドの書式は以下のとおりです。
pgrep [ オプション ] 検索パターン
実行例:

検索パターンには拡張正規表現が指定できます。-lオプションを使うと、検索パターンにマッチしたプロセス名も表示されます。

-uオプションを使うと、特定のユーザーが実行したプロセスのみを検索対象とすることができます。
例)

kill、killall、pkillコマンドで、プロセスに終了や再起動などのシグナル(命令)を送ることができます。kill、killall、pkillコマンドの書式と主なシグナル名およびシグナル番号は以下のとおりです。
kill [-シグナル名または-シグナル番号] プロセスID
または
kill -s [シグナル名またはシグナル番号] プロセスID
killall [-シグナル名または-シグナル番号] プロセス名(コマンド名)
または
killall -s [シグナル名またはシグナル番号] プロセス名(コマンド名)
pkill [-シグナル名または-シグナル番号] プロセス名(コマンド名)
または
pkill --signal [-シグナル名または-シグナル番号] プロセス名(コマンド名)

killコマンドはプロセスID(PID)を使用して単一のプロセスにシグナルを送りますが、killallコマンドはプロセス名(コマンド名)を使用して、同じプロセス名の全てのプロセスに対してシグナルを送ります。
例) kill -SIGHUP 1133
例) killall -SIGHUP mycommand
また、pkillコマンド、もしくはkillallの-rオプションを使うことで、プロセス名を拡張正規表現で指定してシグナルを送ることができます。
例)

また、killコマンドはジョブ番号を指定し、ジョブにシグナルを送る事もできます。ジョブ番号は「%ジョブ番号」と指定します。
例) kill %2
ジョブ番号はjobsコマンドで確認することができます。先頭の[ ]内の数値がジョブ番号です。
出題範囲の場所が違いませんか?
投稿日 2025/11/11
この問題は、
「1.03.2 フィルタを使ったテキストストリームの処理」で出題されていますが、
kill,pkill,killallなどプロセスの問題なので、
「1.01.4 プロセスの生成、監視、終了」
の範囲ではないでしょうか。
スタッフからの返信
この投稿に対して返信しませんか?
s staff_ueda
2025/11/11 22:16
Pnt469_001 さん ご指摘の点を修正致しました。 ご報告、誠にありがとうございました。