概要
プロセス名や属性で対象を絞り、まとめてシグナルを送ります。PIDを個別に調べずに操作できる反面、条件が広いと関係ない処理まで巻き込みます。
基本構文
pkill [オプション]... パターン詳細解説
pkillは、プロセス名、実行ユーザー、親プロセス、端末などの条件に一致するプロセスへシグナルを送るコマンドです。killがPID中心の道具であるのに対し、pkillは「どの条件に一致するものへ送るか」を先に決める道具です。
実務では、同じ名前のワーカープロセスをまとめて終了する、設定再読み込みのためにHUPシグナルを送る、特定ユーザーの暴走処理を整理するといった場面で使います。
便利な反面、条件が曖昧だと意図しないプロセスまで止めてしまいます。まずpgrepで対象を確認し、その後にpkillへ進む運用が安全です。
このコマンドを使う場面
同名プロセスをまとめて扱いたい時、特定ユーザーの処理へまとめてシグナルを送りたい時、再読み込み要求を一括で出したい時に使います。
まず安全に試す方法
1. sleep 300 &
2. sleep 300 &
3. pgrep sleep
4. pkill -x sleep
5. pgrep sleep
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
同名のsleepを複数起動し、pgrepで確認後にpkill -xで終了します。
資格試験との関連
-
LinuC レベル1
範囲: 1.01.4 プロセスの生成、監視、終了根拠: officialLinuCレベル1では、プロセスの選別とシグナル送信が重要です。
-
LPIC-1
範囲: 103.5 プロセスの生成、監視、終了根拠: officialLPIC-1では、プロセスの選択とシグナル送信の理解が求められます。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、pkillは実運用でも役立つ重要コマンドです。
実行結果サンプル
-
sleep 300 & sleep 300 & pgrep sleep12345 12346 -
pkill -x sleep pgrep sleep出力なし
戻り値コード
- 0 正常終了。処理に成功しました。
- >0 対象不存在、権限不足、不正な引数などで処理できませんでした。
使用例
pkill -x sleeppkill -u appuser -f "python worker.py"pkill -HUP nginx
よくあるエラー
-
関係ないプロセスまで止まった 原因: 一致条件が広すぎました。対処: まずpgrepで一致対象を確認し、-xや-u、-fを適切に使い分けます。
-
狙った対象が止まらない 原因: 名前ではなくコマンドライン全体や別ユーザー条件で動いています。対処: pgrep -aで実際の表示名や引数を確認します。
導入・互換性情報
Linuxではprocps-ng系の実装が一般的です。名前一致、完全一致、コマンドライン全体一致などの挙動差を避けるため、-xや-fを明示すると安全です。
注意点 / セキュリティリスク
危険度は中程度です。名前だけで広く一致させると、止めるつもりのない処理まで対象になります。まずpgrepで一致対象を確認してから実行します。
FAQ
-
Q. killとの違いは何ですか。 A. killはPID中心、pkillは名前や属性条件で対象を選ぶ道具です。
-
Q. まず何を確認すべきですか。 A. pgrepで何件一致するか、どのPIDが対象になるかを確認してから送信するのが安全です。
参照リンク
- カテゴリー: Process And Jobs
- レベル: Practical
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎