このページで解説している内容は、以下の 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
はさらに細かい条件指定が可能です。これにより、システム管理者は特定のプロセスを効率的に管理することができます。