killコマンド

killコマンド

用途

実行中のプログラムにシグナルを送る(停止する)

書式1

kill [オプション] プロセスID

書式2

kill [オプション] %ジョブ番号

主なオプション

  • -lシグナルの一覧を表示する
  • -s引数にシグナルを指定してプログラムに送る

主なシグナル

  • (1) SIGHUP 端末の切断によるプロセスの終了/プロセスの再起動
  • (2) SIGINT キーボードからの割込みによるプロセスの終了(Ctrl+c)
  • (3) SIGQUITキーボードからのプロセスの中止(Ctrl+\)
  • (6) SIGABRTプログラムの異常終了によるプロセスの終了
  • (9) SIGKILLプロセスの強制終了(※ゾンビプロセス無効)
  • (15) SIGTERMプロセスの終了(※デフォルト)
  • (18) SIGCONT中断したプログラムの再開
  • (19) SIGSTOPプログラムの中断(サスペンド)(Ctrl+z)

killコマンドの基本的な使い方

シグナル指定の方法

送るシグナルは、”-s”オプションの後に指定又は、
“-シグナル名”、”-シグナル番号”でも指定することができます。
オプションを指定しない場合は、”-TERM”、”-15″がデフォルトで適用されます。

・以下の指定は同じ意味
$ kill プロセスID
$ kill %ジョブ番号
$ kill -TERM プロセスID
$ kill -s TERM プロセスID
$ kill -15 プロセスID

実行中のプロセスを停止する

シグナルを送るプロセスの指定方法には、
プロセスIDを指定する方法と、ジョブ番号を指定する方法があります。
まずは、シグナルを送るプロセスを「ps」コマンドや「jobs」コマンドで調査します。

以下では、試しに別端末で動作させたvmstatコマンドを停止させてみます。

・psコマンドでプロセスIDを調査
[devi@syslog ~]$ ps aux|grep vmstat
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
devi 18575 0.0 0.0 1796 556 pts/1 S+ 13:54 0:00 vmstat 5 100
devi 18579 0.0 0.0 3916 668 pts/0 R+ 13:54 0:00 grep vmstat
・jobsコマンドでジョブ番号とプロセスIDを調査
[devi@syslog ~]$ jobs -l
[1]+ 18575 Running vmstat 5 100 &
[devi@syslog ~]$
・プロセスIDで指定する場合
[devi@syslog ~]$ kill -s TERM 18575
[devi@syslog ~]$
・ジョブ番号で指定する場合
[devi@syslog ~]$ kill -s TERM %1
[devi@syslog ~]$

他人のプロセスは停止できない

当然ですが、一般ユーザでの実行は、
自分以外のプロセスを終了させることはできません。
他人のプロセスを終了させる場合は、root権限での操作が必要です。

・試しに、wwwユーザのプロセスにちょっかいを出してみます
[devi@syslog ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
www 3110 0.0 0.7 20028 9744 ? S Sep02 0:00 /usr/local/apache2/bin/httpd -k start
[devi@syslog ~]$
・権限が無いよと怒られます
[devi@syslog ~]$ kill -s TERM 3110
-bash: kill: (3110) – Operation not permitted
[devi@syslog ~]$

ゾンビに効かないkillコマンド

killコマンドを利用してプロセスを強制的に終了させると、
たまにゾンビプロセスが発生したりします。

上手く終了できないなぁ…。
と考えて、更にkillコマンドで終了を試みるのですが、
一向に消えてくれる様子がありません。

この現象は、プログラム自体は終了しているが、
プロセステープルには、プロセスIDが残ってしまっていることが原因のようです。

「お前は既に死んでいる。」
恐るべし。ゾンビプロセス。

タグ

2009年9月14日 | コメントは受け付けていません。 | トラックバックURL |

カテゴリー:システム管理系コマンド

トラックバック&コメント

コメントは受け付けていません。