Hack 93. Kill コマンド
kill コマンドは実行中のプロセスを終了します。
通常このコマンドはハングしたり応答のないプロセスを終了するために使用されます。
Syntax: kill [options] [pids|commands]
ハングしたプロセスを終了するには?
まず、ps コマンドを使用して終了したいプロセスのプロセス id を特定します。
プロセス id が分かったら、kill コマンドに引数としてそれを渡します。
以下の例では、ハングした apache httpd プロセスを終了する方法を示しています。
通常、apache を正常に終了するには、 “apachectl stop” を使用すべきであることに注意してください。
# ps aux | grep httpd USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND apache 31186 0.0 1.6 23736 17556 ? S Jul26 0:40 /usr/local/apache2/bin/httpd apache 31187 0.0 1.3 20640 14444 ? S Jul26 0:37 /usr/local/apache2/bin/httpd # kill 31186 31187
上記のコマンドは SIGTERM と呼ばれるシグナルを送ることで慎重にプロセスを終了しようとしていることに注意してください。
プロセスが終了しなかった場合、SIGKILL と呼ばれるシグナルを渡すことでプロセスを強制的に終了することができます。
以下に示すように オプション -9 を使用します。
プロセスの所有者であるかプロセスを終了する権限のあるユーザである必要があります。
# kill -9 31186 31187
簡単に複数のプロセスを終了するもう一つの方法は、
.bash_profile に次の2つの関数を追加することです。
function psgrep () { ps aux | grep "$1" | grep -v 'grep' } function psterm () { [ ${#} -eq 0 ] && echo "usage: $FUNCNAME STRING" && return 0 local pid pid=$(ps ax | grep "$1" | grep -v grep | awk '{ print $1 }') echo -e "terminating '$1' / process(es):\n$pid" kill -SIGTERM $pid }
そこで、すべての httpd プロセスを認識し終了するために次のようにします。
# psgrep http USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND apache 31186 0.0 1.6 23736 17556 ? S Jul26 0:40 /usr/local/apache2/bin/httpd apache 31187 0.0 1.3 20640 14444 ? S Jul26 0:37 /usr/local/apache2/bin/httpd # psterm httpd terminating 'httpd' / process(es): 31186 31187