本文へスキップ
BecomeCoder

サーバーコース · 第2章 サービスとプロセス · レッスン8

pkill ― 名前でまとめて止める

ブラウザで完結

導入

kill は「番号」で1つずつ止めます。でも同じプログラムが何個も動いていると、番号を1つずつ調べて打つのは面倒です。そこで 名前でまとめて 止められるのが pkill。ワーカーが大量に増えたときなどに重宝します。

説明

止める前に、まず 名前で PID を調べる pgrep(process grep)から入ると安全です。名前を渡すと、一致するプロセスの番号が並びます。

pgrep python3

20482050 の2つが返りました。-l を付けると名前も一緒に出るので、狙いが合っているか確認できます。

pgrep -l python3

狙いが正しいと分かったら、pkill 名前一致するプロセスを一度に 止めます。番号を1つずつ打つ必要はありません。

pkill python3
pgrep python3

pgrep python3 が何も返さなくなりました(=もう動いていない)。pkillkill と同じく、成功時は無言です。結果は pgrepps で確かめます。

kill と同じシグナル指定も使えます。強制終了なら -9 を添えます。

pkill -9 python3

pkill(と pgrep)は既定で プロセス名 を照合します。python3 train.py の「コマンドライン全体」(= train.py の部分)で探したいときは -f を付けます。

pkill -f train.py
flowchart LR
    A["pgrep 名前<br/>まず番号を調べる"] --> B["pkill 名前<br/>一致を全部止める"]
    B --> C["pgrep / ps<br/>止まったか確認"]

便利な反面、pkill名前が一致するものを全部 止めます。pkill ssh のつもりが自分のSSH接続まで巻き込む、といった事故もあり得ます。いきなり pkill せず、まず pgrep で「本当にこれだけか」を確かめてから止めるのが安全なやり方です。

やってみよう

pgrep python3 で2つの PID が返ることを確かめ、pgrep -l python3 で名前も見てから、pkill python3 でまとめて止めてください。止めたあと pgrep python3 が空になる(=全部止まった)ことを確認しましょう。-f を使うと pkill -f train.py のようにコマンドラインの一部でも狙えます。

演習

python3 という名前のプロセスを、名前を指定してまとめて終了させてください。

ヒント1を見る

名前でまとめて止めるのは pkill 名前 です。

ヒント2を見る

pkill python3

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

Linux シェル(シミュレート)

ブラウザ内でコマンドを試せる仮想シェルを読み込みます(本物のLinuxカーネルではなく学習用の再現です)。
スクロールして表示された時点でも自動で読み込まれます。