Linuxコマンドのkillall

killall [オプション] [-signal(シグナル)] [name]

killallは指定された名前のすべてのプロセスにシグナルを送信します。シグナルが指定されていない場合、デフォルトでSIGTERMが送信されます。シグナルは名前または数字で指定可能ですが、シグナル0(プロセス存在確認)は数字でのみ指定可能です。

コマンド名にスラッシュ(/)が含まれる場合、その特定ファイルを実行中のプロセスのみが終了します。これはプロセス名と無関係です。

killall自身はkillallプロセスを終了できませんが、他のkillallプロセスは終了可能です。

(1).オプション

-e,--exact 精確なマッチング。コマンド名が15文字を超える場合、前15文字でマッチするすべてのプロセスが終了します。-eオプションで正確なマッチングを行います。
-g,--process-group プロセスグループ内のすべてのプロセスを終了。
-i,--interactive 終了前に確認を求めるインタラクティブモード。
-I,--ignore-case プロセス名のマッチングで大文字小文字を区別しません。
-l,--list すべてのシグナル名を一覧表示。
-o,--older-than 指定時間以前に開始したプロセスのみを終了(単位:s,m,h,d,w,M,y)。
-q,--quiet エラーメッセージを出力しない静粛モード。
-r,--regexp 拡張正規表現でnameを解釈。
-s,--signal 指定されたシグナルを送信(-signalと同等)。
-u.--user 指定ユーザーが所有するプロセスのみを終了。コマンド名はオプション。
-v,--verbose 送信成功を報告。
-V,version バージョン表示。
-w,--wait killall実行完了を待機。信号が無視される場合やゾンビ状態の場合は永久に待機。
-y,--younger-than 指定時間以降に開始したプロセスのみを終了(-oの逆)。
-z,--context (SELinux専用)指定コンテキストでマッチするプロセスのみを終了。拡張正規表現を指定可能。他のパラメータより前に指定。

(2).使用例

killallのシグナル種類はkillコマンドより少なめで、以下が代表的です。

[xf@xuexi ~]$ killall -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

よく使われるシグナルはHUP(1、端末切断)、INT(2、中断、Ctrl+C相当)、QUIT(3、終了、Ctrl+\相当)、KILL(9、強制終了)、TERM(15、デフォルトシグナル、正常終了)、CONT(18、再開、fg/bgコマンド相当)、STOP(19、停止)、TSTP(20、一時停止、Ctrl+Z相当)です。

正常終了と強制終了の違いは以下の通りです。

[xf@xuexi ~]$ vim sample.txt&
[1] 9870
[xf@xuexi ~]$ killall -15 vim  //TERMシグナルによる正常終了
[1]+  停止               vim sample.txt
[xf@xuexi ~]$ vim sample.txt&
[1] 9601
[xf@xuexi ~]$ killall -9 vim  //KILLシグナルによる強制終了
[1]+  停止               vim sample.txt
[1]+  終了               vim sample.txt

(3).関連コマンド

pkill [オプション] <パターン>

killallと類似したpkillコマンドは、管理者がログイン中のユーザーを強制的に切断する用途に使われます。

[root@xuexi ~]# w  //オンラインユーザー確認
 11:08:44 up  1:43,  4 users,  load average: 0.14, 0.13, 0.09
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
xf       :0       :0               09:26   ?xdm?   4:07   0.68s /usr/libexec/gn
root     pts/0    :1               11:08    4.00s  0.11s  0.03s w
root     :1       :1               11:01   ?xdm?   4:07   0.55s /usr/libexec/gn
user1    pts/1    192.168.128.137  11:08   21.00s  0.08s  0.08s -bash    //対象
[root@xuexi ~]# pkill -kill -t pts/1  //TTY(pts/1)にKILLシグナル送信
[root@xuexi ~]# w
 11:09:07 up  1:43,  3 users,  load average: 0.10, 0.13, 0.09
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
xf       :0       :0               09:26   ?xdm?   4:10   0.69s /usr/libexec/gn
root     pts/0    :1               11:08    3.00s  0.12s  0.03s w
root     :1       :1               11:01   ?xdm?   4:10   0.56s /usr/libexec/gn

タグ: linux killall pkill シグナル処理 プロセス管理

8月10日 03:34 投稿