Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

pkill、pgrepが便利すぎて全僕が泣いた

実行中のrailsプロセスを抹殺する場合

  • ps | greprailsを探す*1
  • プロセス番号をコピペ
  • kill -9で爆発四散!

という流れをとっていました。
巷の入門サイトなんかでも、よくある解説ですね。
ですがまぁ……創造的怠惰に手足が生えたようなUNIXハッカーの事、こんな二度手間を許容するわけがないですね。
調べてみたら、案の定あったんです。以上を一発で実現するコマンドが。

pgrep

$ pgrep ruby
79459
$ ps -ax | grep ruby
79459 ??         0:00.00 ruby weatherd.rb
79462 ttys005    0:00.00 grep ruby

ps -ax | grep hoge | grep -v grep をまとめてやってくれる賢い子です。
一度知ったら戻れませんね。

-lオプション

プロセス名が欲しい場合は「-l」オプションをつけて下さい。

$ pgrep -l -f VBox
56123 /Applications/VirtualBox.app/Contents/MacOS/VBoxHeadless --comment ubuntu ...
50567 /Applications/VirtualBox.app/Contents/MacOS/VBoxNetDHCP --network ...
38731 /Applications/VirtualBox.app/Contents/MacOS/VBoxSVC --auto-shutdown
38729 /Applications/VirtualBox.app/Contents/MacOS/VBoxXPCOMIPCD

実に長いプロセス名があったのですが、省略しました。
実際にはちゃと全文でます。

pkill

$ pkill ruby
$ ps -ax | grep ruby
79468 ttys005    0:00.00 grep ruby

pgrep + kill なコマンドです。
念のためお決まりのコマンドで確認しても、ちゃんと消えてます。
ただし、一致したら問答無用でGYAKUSATSUします。
注意して使った方が良いかと。

*1:grep -v grep で重複を消すなんて方法もあるみたいで