killallは、
UNIX系オペレーティングシステムで利用できるコマンドラインユーティリティです。このコマンドは、その実装によって大きく異なる2種類の動作をします。
System V系(Solaris、Linuxのsysvinitなど)におけるkillall
System V系の実装では、killallは非常に強力かつ危険なコマンドです。このバージョンは、ユーザーが強制終了できる全てのプロセスを強制的に終了させます。root権限で実行した場合、事実上システム全体を停止させることが可能になります。そのため、この実装のkillallは慎重な使用が求められます。
psmiscツールにおけるkillall
一方で、psmiscツールに含まれるkillallは、pkillやskillコマンドと似た動作をします。このバージョンでは、コマンドラインで指定されたプロセスのみを強制終了させます。このため、System V系と比較して安全性が高く、より細やかなプロセス管理が可能です。
共通の動作
どちらのバージョンのkillallも、プロセスに対してシグナルを送るという点は共通しています。デフォルトではSIGTERMシグナルが送られますが、オプションで他のシグナルも指定できます。
使用例
System V版での全プロセス強制終了
bash
killall
このコマンドは、ユーザーが強制終了できる全てのプロセスを終了させます。root権限で実行すると、システムが停止する可能性があります。
Linux版でのシグナル一覧表示
bash
killall -l
このコマンドは、killallがプロセスに送ることができるシグナルの一覧を表示します。
Linux版での特定のプロセスへのシグナル送信
bash
killall -s USR1 dd
このコマンドは、ddプロセスに対してUSR1シグナルを送信します。
Linux版での特定のプロセス強制終了
bash
killall -9 dd
このコマンドは、ddプロセスに対してSIGKILLシグナル(シグナル番号9)を送信し、プロセスを強制終了させます。
シグナルについて
killallはデフォルトでSIGTERMシグナルをプロセスに送ります。これは、プロセスに正常な終了を要求するシグナルです。しかし、`-s`オプションや数値オプションを用いることで、プロセスに送るシグナルを任意に指定できます。例えば、`-9`オプションは、プロセスにSIGKILLシグナル(シグナル番号9)を送り、強制終了させます。
関連コマンド
kill: プロセスIDを指定してシグナルを送るコマンド。
pidof: プロセス名からプロセスIDを取得するコマンド。
pkill: プロセス名やその他の条件でプロセスを検索し、シグナルを送るコマンド。
参考資料
MANPAGE of killall JM Project
killall(1M) Solaris 10 Reference Manual Collection (英語)
killall(1M) man page(HP-UX リファレンス)