概要
名前に一致する複数プロセスへ一括でシグナルを送ります。対象が広がりやすいため、killよりも慎重な確認が必要です。
基本構文
killall [オプション]... 名前...詳細解説
killallは、指定した名前に一致するプロセスへ一括でシグナルを送るコマンドです。PIDを個別指定するkillより入力は短くなりますが、その分だけ意図しない対象まで含めやすい特徴があります。
実務では、同名ワーカー群をまとめて停止する、再起動前に一括終了する、といった場面で役立つことがあります。しかし、本番環境では本当にその名前の全プロセスを止めてよいのかを慎重に確認すべきです。
さらに注意すべきなのは、killallはUNIX系OSごとに意味が大きく異なることがある点です。Linux前提を明示して使うべきコマンドです。
このコマンドを使う場面
同名ワーカー群の一括停止、保守前のまとめて終了、確認付きの一括シグナル送信に使います。
まず安全に試す方法
1. sleep 300 &
2. sleep 300 &
3. pgrep -a sleep
4. killall -i sleep
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
複数のsleepを起動し、killall -iで確認付き終了を試します。
実行結果サンプル
-
sleep 300 & sleep 300 & killall -i sleepKill sleep(12345) ? Kill sleep(12346) ?
戻り値コード
- 0 正常終了。対象へシグナル送信できました。
- 1 一致するプロセスが見つからない、または送信できませんでした。
- >1 不正な条件指定などで処理できませんでした。
使用例
killall nginxkillall -s HUP nginxkillall -i sleepkillall -u appuser worker
よくあるエラー
-
止めたくない同名プロセスまで止まった 原因: 名前一致で広く対象化しました。対処: 事前にpgrep -aで確認し、必要なら-uや-iで絞ります。
-
別OSで全く違う意味だった 原因: killallはOSごとに意味差が大きいコマンドです。対処: Linux前提を明示し、移植性が必要ならkillやpkillを検討します。
導入・互換性情報
Linuxのpsmisc版killallと、他のUNIX系OSのkillallは意味が大きく異なることがあります。移植性が必要な手順書では安易に使わず、Linux前提であることを明示するのが安全です。
注意点 / セキュリティリスク
危険度は中程度です。名前一致で広く作用するため、同名の複数プロセスや想定外の派生プロセスまで止める恐れがあります。
FAQ
-
Q. killallとpkillは何が違いますか。 A. どちらも名前条件で送信できますが、pkillは条件指定が柔軟で、killallは名前指定の一括送信として使われることが多いです。
-
Q. 本番で使ってよいですか。 A. 慎重に対象確認したうえで使うべきです。PID個別指定のほうが安全な場面も多いです。
参照リンク
- カテゴリー: Process And Jobs
- レベル: Practical