このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】プロセスにシグナルを送信する:pkillコマンド

pkillコマンドの概要

 pkillコマンドは、プロセス名やその他の条件に一致するプロセスにシグナルを送信して終了させるためのコマンドです。プロセスIDを直接指定する必要がないため、プロセス名やユーザー名、グループ名などで柔軟にプロセスを制御することができます。killallコマンドと似ていますが、より多様なフィルタリングオプションを提供します。

【構文】
pkill [オプション] プロセス名

主なオプションと説明

オプション説明
-シグナル名 または -シグナルID送信するシグナルを指定します。
-U ユーザー名指定した実ユーザー(real user)によるプロセスを対象とする。
-G グループ名指定した実グループ(real group ID)によるプロセスを対象とする。
主なオプションと説明

コマンドの使用例と解説

1.プロセス名での終了

 「sleep 1000」コマンドをバックグラウンドで実行します。バックグラウンドでジョブを実行するには、コマンドの末尾に「&(アンド)」記号を追加して実行します。

  • sleep 1000 &」コマンドを実行します。
user01@ubuntu-vm:~$ sleep 1000 &
[1] 6876
  • pkill sleep」コマンドを実行します。

 名前がsleepであるすべてのプロセスに対してデフォルトのSIGTERMシグナルを送信し、終了を要求します。

user01@ubuntu-vm:~$ pkill sleep 
[1]+  Terminated              sleep 1000

2.シグナルを指定してプロセスを終了

以下のコマンドを実行します。

  • sleep 1000 &」コマンド
  • sleep 2000 &」コマンド
  • pkill -KILL sleep」コマンド

バックグラウンドで「sleep」コマンドを2つ実行します。

名前がsleepであるすべてのプロセスに対してSIGKILLシグナルを送信し、即座に強制終了します。

user01@ubuntu-vm:~$ sleep 1000 &
[1] 6901
user01@ubuntu-vm:~$ sleep 2000 &
[2] 6902
user01@ubuntu-vm:~$ pkill -KILL sleep 
[1]-  強制終了            sleep 1000
[2]+  強制終了            sleep 2000

3.特定のユーザーのプロセスを終了

以下のコマンドを実行します。

  • sleep 1000 &」コマンド
  • pkill -U user01 sleep」コマンド

バックグラウンドで「sleep」コマンドを1つ実行します。

 ユーザーuser01が所有するsleepプロセスに対してSIGTERMシグナルを送信し、終了を要求します。

user01@ubuntu-vm:~$ sleep 1000 &
[1] 6908
user01@ubuntu-vm:~$ pkill -U user01 sleep
[1]+  Terminated              sleep 1000

4.特定のグループのプロセスを終了

以下のコマンドを実行します。

  • sleep 1000 &」コマンド
  • pkill -G user01 sleep」コマンド

バックグラウンドで「sleep」コマンドを1つ実行します。

 グループuser01が所有するsleepプロセスに対してSIGTERMシグナルを送信し、終了を要求します。

user01@ubuntu-vm:~$ sleep 1000 &
[1] 6923
user01@ubuntu-vm:~$ pkill -G user01 sleep
[1]+  Terminated              sleep 1000

まとめ

 pkillコマンドは、プロセス名やユーザー名、グループ名など、さまざまな条件に基づいてプロセスを柔軟に制御するために非常に便利です。killallコマンドと似ていますが、pkillはさらに細かい条件指定が可能です。これにより、システム管理者は特定のプロセスを効率的に管理することができます。