killall – プロセス名を指定してまとめて終了する

制御(停止・再開・終了)

killall は、プロセスID(PID)ではなくプロセス名を指定して複数のプロセスにシグナル(終了など)を送るコマンドです。
実務では「特定のサービス名のプロセスを一気に止めたい」「ユーザーごとのプロセスをまとめて終了したい」といった場面でよく使われます。

構文(Syntax)

# 基本
killall [オプション] プロセス名...

# シグナルを指定
killall -s SIGNAL [オプション] プロセス名...
killall -SIGNAL [オプション] プロセス名...

# 特定ユーザーのプロセスのみ対象
killall -u USER [オプション] プロセス名...

# 利用可能なシグナル一覧を表示
killall -l
  • SIGNALTERM, KILL, HUP などのシグナル名、または 9, 15 のような番号で指定できます。
  • プロセス名ps などで確認できるコマンド名です。

主なオプション一覧

オプション説明使用例
(なし)デフォルトのシグナル SIGTERM を送信して終了を要求するkillall nginx
-9SIGKILL を送信し、強制終了する(最後の手段として使用)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
-Vkillall 自身のバージョン情報を表示するkillall -V

※ オプションの組み合わせ例:killall -u USER -w -v プロセス名

実行例

例1: 実行中の sleep プロセスを名前で終了する

  1. まずテスト用のプロセスをバックグラウンドで起動します。
sleep 1000 &
  1. 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 環境などでは、オプションが少なかったり動作が簡略化されている場合があります。
  • 権限に関する注意
    • 一般ユーザーは、自分が所有するプロセス に対してのみシグナルを送ることができます。
    • 他ユーザー(例: root, www-data)のプロセスを操作するには sudo が必要です。
    • 間違えて重要なシステムプロセスを終了すると、サービス停止やシステムダウンにつながるため注意が必要です。
  • プロセス名のマッチ
    • プロセス名は実行ファイル名に基づきます。ps auxps -ef などで正確な名前を確認してから killall を実行してください。
    • -I オプションで大文字小文字を無視でき、-r で正規表現マッチも可能ですが、マッチ範囲が広くなりすぎないよう注意してください。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント