12月 27 2007
pkill を使うようにした
サーバ管理とかでの話。
FreeBSDやLinuxで、あるプロセス(例えばvim)を調べる/殺す際に、今までは
$ ps auxww | grep vim
なんて process id を調べてから kill、なんてやってたんだけどいい加減やめようと思って意図してpkill, pgrep を使うようにする。
pgrep を使えば process id は
$ pgrep vim
で調べられる。もし引数も含めて調べるなら
$ pgrep -f tiarra
などする必要がある。(-f で引数まで含めてパターンマッチングする)
-l で出力する情報を少しだけ増やせる。
また、最後に起動した tiarra だけ調べたい、などという場合なんかは
$ pgrep -fn tiarra
とすればよい。-n で最後に起動したプロセスだけ抽出する。-o なら最初。
んで、pgrep で調べた後に かわりに pkill にすれば、kill の動作をしてくれる。 (いきなりpkill食らわせるのはまだ怖い)
ちなみに killall は solaris でアレなのでなるべく使わないようにしてる。
自分の環境は主に FreeBSD6 なので、ports で sysutils/pkill を入れて使用した。 Linux では最初から入ってることも多そう。(最近の事情はよく知らないけど)
あと似たコマンドで skill があって (sysutils/skill)、 interactive mode があったり、正規表現でプロセス名を指定できたりする。 またこっちには nice 相当の snice がある。
skill と pkill ではかなりオプションが違うので要注意。-v とかうっかり skill に使うとまずいことうけあい。どちらかをメインで使って残りはちゃんと man を引いて使う方がよさそう。
