助け合いフォーラム

LPIC

LPIC Lv1-101(Ver5.0)
問題ID : 3610
問題を開く
現在実行中のプロセスから特定の名前を持つプロセスIDを検索したい。適切なコマンドは次のどれか。

正解

pgrep

解説

pgrepコマンドで実行中のプロセスから特定の名前を持つプロセスIDを検索することができます。

したがって正解は
・pgrep
です。

pgrepコマンドの書式は以下のとおりです。

pgrep [ オプション ] 検索パターン

実行例:


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


-uオプションに実効ユーザー(実際の権限)名や実効ユーザー識別子(EUID)を指定すると、その権限で動作しているプロセスを検索できます。
例)


その他の選択肢については以下のとおりです。

・pstree
現在実行中のプロセスを表示するコマンドのため、誤りです。

・grep
文字列を検索するコマンドのため、誤りです。grepコマンド単体では実行中のプロセスから検索することは出来ません。その場合は、psコマンドの出力結果から検索することになります。

実行例:


・pkill
指定したパターンにマッチする名前のプロセスにシグナルを送るコマンドのため、誤りです。

参考

【プロセスの検索】
プロセスとは、システム上で動作しているプログラムの最小単位のことです。psコマンドは実行中のプロセスを一覧表示します。PID(プロセスID)やプロセス名(コマンド名)を確認できます。


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

pgrep [オプション] 検索パターン

実行例:


検索パターンには、複数の文字列を記号で表す拡張正規表現が指定できます。以下の(as|ss)hは、ashまたはsshに一致します。-lオプションを使うと、検索パターンにマッチしたプロセス名も表示されます。


■ユーザーを指定して検索
特定のユーザーが実行したプロセスや、特定の権限で動作するプロセスも検索できます。
-Uオプションは実ユーザーで、-uオプションは実効ユーザーで検索します。実ユーザーはプロセスを起動したユーザー、実効ユーザーはプロセスの権限の判定に使われるユーザーです。
指定にはユーザー名のほか、実ユーザーの識別番号(UID)や実効ユーザーの識別番号(EUID)も使えます。

以下は、sudoで別のユーザーとして実行する例と、SUID(実行ファイルの所有者の権限で動作させる設定)によって実効ユーザーが変わる例です。


【シグナルによるプロセスの制御】
psやpgrepで調べたPIDは、killコマンドの送信先に指定できます。
kill、killall、pkillコマンドで、プロセスに終了や一時停止などを通知するシグナルを送ることができます。kill、killall、pkillコマンドの書式と主なシグナル名およびシグナル番号は以下のとおりです。

■kill:PIDで指定
kill [-シグナル名または-シグナル番号] プロセスID
または
kill -s シグナル名またはシグナル番号 プロセスID

■killall:プロセス名で指定
killall [-シグナル名または-シグナル番号] プロセス名(コマンド名)
または
killall -s シグナル名またはシグナル番号 プロセス名(コマンド名)

■pkill:プロセス名のパターンで指定
pkill [-シグナル名または-シグナル番号] プロセス名(コマンド名)
または
pkill --signal シグナル名またはシグナル番号 プロセス名(コマンド名)

kill・killallの-sとpkillの--signalは、シグナルを指定するオプションです。その後のシグナル名・番号にはハイフンを付けません。例えば、pkill -TERM mycommandとpkill --signal TERM mycommandは同じ動作です。
シグナルを指定しない場合は、kill、killall、pkillのいずれもSIGTERM(15)を送ります。


killコマンドはプロセスID(PID)を指定してシグナルを送ります。PIDは複数指定できます。
killallコマンドはプロセス名(コマンド名)を使用して、同じプロセス名の全てのプロセスに対してシグナルを送ります。

例) kill -SIGHUP 1133
例) killall -SIGHUP mycommand

また、pkillコマンドでは、プロセス名を拡張正規表現で指定できます。killallコマンドでも、-rオプションを付けると同様に指定できます。

例) killall -r 'mycommand[23]'

例)


■ジョブ番号で指定
また、killコマンドはジョブ番号を指定し、ジョブにシグナルを送ることもできます。ジョブ番号は「%ジョブ番号」と指定します。

例) kill %2

ジョブ番号はjobsコマンドで確認することができます。先頭の[ ]内の数値がジョブ番号です。
上に戻る

自分の認識があっているか

投稿日 2026/07/24

現在実行中のプロセスから特定の名前を持つプロセスIDを検索したい。適切なコマンドは次のどれか

上記の文章だとpsコマンドの-Cオプションで表示できると思っているのですがどうなんでしょうか。
自分の解釈(小豆本による解説)だと「PIDの検索はpsコマンドでもいいけど、pgrepコマンドを使うと便利だよ。」
という解釈なのですが、あっているでしょうか。

あっているのならば問題文に「PIDのみ表示させる」とかないと誤解を招くと思うのですが。

スタッフからの返信

s staff_ueda

2026/07/27 15:48

saito_hiroki 様 ご指摘の点を修正いたしました。 ご報告いただきまして、誠にありがとうございます。

この投稿に対して返信しませんか?