今回は、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」で終了する。
結構単純なスクリプトだが、意外と便利だ。
以下にソースを示す。
続きを読む