killall は、プロセスID(PID)ではなくプロセス名を指定して複数のプロセスにシグナル(終了など)を送るコマンドです。
実務では「特定のサービス名のプロセスを一気に止めたい」「ユーザーごとのプロセスをまとめて終了したい」といった場面でよく使われます。
構文(Syntax)
# 基本
killall [オプション] プロセス名...
# シグナルを指定
killall -s SIGNAL [オプション] プロセス名...
killall -SIGNAL [オプション] プロセス名...
# 特定ユーザーのプロセスのみ対象
killall -u USER [オプション] プロセス名...
# 利用可能なシグナル一覧を表示
killall -l
SIGNALはTERM,KILL,HUPなどのシグナル名、または9,15のような番号で指定できます。プロセス名はpsなどで確認できるコマンド名です。
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | デフォルトのシグナル SIGTERM を送信して終了を要求する | killall nginx |
-9 | SIGKILL を送信し、強制終了する(最後の手段として使用) | killall -9 httpd |
-s SIGNAL | 送るシグナルを名前または番号で指定する | killall -s HUP nginx |
-u USER | 指定ユーザーが所有するプロセスだけを対象にする | killall -u www-data php-fpm |
-I | プロセス名の大文字・小文字を区別しない | killall -I sshd |
-r | プロセス名を正規表現として扱う | killall -r 'ssh(d)?' |
-w | 指定したプロセスが終了するまで待機する | killall -w nginx |
-q | 対象プロセスが見つからなくてもエラーを表示しない | killall -q myapp |
-v | 終了した各プロセスについて情報を表示する | killall -v nginx |
-l | 使用可能なシグナル名を一覧表示する | killall -l |
-V | killall 自身のバージョン情報を表示する | killall -V |
※ オプションの組み合わせ例:killall -u USER -w -v プロセス名
実行例
例1: 実行中の sleep プロセスを名前で終了する
- まずテスト用のプロセスをバックグラウンドで起動します。
sleep 1000 &
sleepという名前のプロセスをすべて終了します。
killall sleep
出力例
(通常は出力なし)
例2: nginx を安全に再起動するために SIGHUP を送る
設定の再読み込みや優雅な再起動のために HUP シグナルを送る例です。
sudo killall -s HUP nginx
出力例
(通常は出力なし。エラー時のみメッセージが出る)
例3: 自分のユーザーが起動した python プロセスだけを終了する
他ユーザーのプロセスには影響を与えず、自分の python プロセスだけ終了します。
killall -u "$USER" python
出力例
(通常は出力なし)
例4: 強制終了(SIGKILL)で止まらないプロセスを殺す
通常の SIGTERM で止まらない場合の「最後の手段」です。乱用は避けてください。
sudo killall -9 myapp
出力例
Killed myapp(1234) with signal 9 # ※ 環境やオプションにより表示内容は変わります
※ 実際の出力は -v オプションの有無などにより異なります。
例5(エラー例): 権限がなくて他ユーザーのプロセスを終了できない
root が所有する sshd プロセスを一般ユーザーが終了しようとして失敗する例です。
killall sshd
出力例(例)
killall: kill 1234 failed: Operation not permitted
この場合は sudo を付けて実行するか、必要であれば管理者に依頼します。
関連コマンド
kill
特定のプロセスID(PID)に対してシグナルを送るコマンド。細かく1プロセスずつ制御したいときに使用。pkill
プロセス名やユーザー名、端末など条件を指定してプロセスにシグナルを送るコマンド。killallより柔軟なマッチ条件を指定可能。ps
現在動作中のプロセス一覧を表示する。killallで終了させる対象のプロセス名を確認するのに使用。pgrep
条件にマッチするプロセスのPIDを取得するコマンド。killと組み合わせて使うことが多い。top/htop
動作中のプロセスをリアルタイムに監視し、インタラクティブにプロセスの終了などを行えるツール。
備考
- 環境依存の違い
- Linux(
psmiscパッケージ)のkillallを前提にした説明です。 - macOS や一部の BSD 系では
killallの挙動やオプションが異なります(例: 実行時間の指定やユーザーごとの動作など)。必ずその環境のman killallを確認してください。 - BusyBox 環境などでは、オプションが少なかったり動作が簡略化されている場合があります。
- Linux(
- 権限に関する注意
- 一般ユーザーは、自分が所有するプロセス に対してのみシグナルを送ることができます。
- 他ユーザー(例:
root,www-data)のプロセスを操作するにはsudoが必要です。 - 間違えて重要なシステムプロセスを終了すると、サービス停止やシステムダウンにつながるため注意が必要です。
- プロセス名のマッチ
- プロセス名は実行ファイル名に基づきます。
ps auxやps -efなどで正確な名前を確認してからkillallを実行してください。 -Iオプションで大文字小文字を無視でき、-rで正規表現マッチも可能ですが、マッチ範囲が広くなりすぎないよう注意してください。
- プロセス名は実行ファイル名に基づきます。
参考
- manページ(Linux
psmisc版)man killall(ターミナルで実行)- オンライン版例:https://man7.org/linux/man-pages/man1/killall.1.html
- psmisc プロジェクト(
killallを含むツール群)

コメント