今回は、psコマンドなどでPIDを調べてkillするのが面倒な場合などに便利なスクリプトを紹介しようと思う。
例えば、killしたいプロセスの名前がある程度分かっている場合などで便利だ。
まずは、実行結果を簡単に説明していこう。
基本的には、
検索→マッチしたプロセスを全て消すか選択して消すか→繰り返し・・・→終了
といったように、対話的に実行していく。
$ ./process_search_kill.pl Argv error. $ ./process_search_kill.pl irc PID Deny(*) (PROCESS INFO) ========================= 3756 * (root 3756 0.0 0.4 .* ircd -c) 6870 * (root 6870 0.0 0.9 .* ./irc_write_httpd.pl) 8111 (500 8111 0.0 0.9 .* ./irc_write_message.pl) 8112 (500 8112 0.0 0.9 .* ./irc_write_secure.pl) 8942 * (root 8942 0.0 0.9 .* ./irc_write_httpd.pl) 8943 * (root 8943 0.0 0.9 .* ./irc_write_httpd.pl) ========================= ( * :Permission deny or killing now) PID is accessible: 8111 8112 PID is not accessible: 3756 6870 8942 8943 kill above all/select process except * ?[all/select/finish]:select Select[finish/PID is alive]. [8111 8112 finish]:8111 kill 8111 PID Deny(*) (PROCESS INFO) ========================= 3756 * (root 3756 0.0 0.4 .* ircd -c) 6870 * (root 6870 0.0 0.9 .* ./irc_write_httpd.pl) 8112 (500 8112 0.0 0.9 .* ./irc_write_secure.pl) 8942 * (root 8942 0.0 0.9 .* ./irc_write_httpd.pl) 8943 * (root 8943 0.0 0.9 .* ./irc_write_httpd.pl) ========================= ( * :Permission deny or killing now) PID is accessible: 8112 PID is not accessible: 3756 6870 8942 8943 Select[finish/PID is alive]. [8112 finish]:finish $
このように、第一引数に検索文字列を指定し、実行すると、文字列に一致するプロセス一覧が表示される。
そして、実行したユーザーがアクセス不可なプロセスには「*」が付けられる。
これで、「all」によって、アクセス可能なプロセスを全てkillするか、「select」によってプロセスを選択しながらkillしていくことができる。
最後は「finish」で終了する。
結構単純なスクリプトだが、意外と便利だ。
以下にソースを示す。