pgrepとpkillで簡単プロセス操作

ps aux|gpre javaとかやってたら友達にもっといい方法があるよと教えてもらった。pgrepとpkill。

$ pgrep -l db
2292
3050
3051

pgrep [プロセス名]でマッチするプロセスIDの一覧が返ってくる。プロセス名をつけたい場合は-lオプションをつける。

$ pgrep -l db
2292 dbus-daemon
3050 dbus-launch
3051 dbus-daemon

psと違って自分自身は一覧に表示されないらしいので、なんかバッチとか作るときは重宝しそう。でも、どんなプロセスが上がってるか見たいときは相変わらずpx aux|grep 〜が便利。
ただ、pkillはもっと使いどころがありそう。下の例はxtermを3つあげてる状態でpgrepしたところ。

$ pgrep -l xterm
8124 xterm
8141 xterm
8158 xterm

複数上がってるプロセスをpkillを使うとまとめてkillできる。

$ pkill xterm
[1] Exit 15 xterm
[2]- Exit 15 xterm
[3]+ Exit 15 xterm