はじめに
タイトルのとおりですが、pgrepやpkillを使ってプロセス名からkillするメモ。
ちなみに、今まではプロセスを殺す際にこんな感じでやってました
今までの
kill…その1
# ps aux | grep td-agent root 5041 0.0 0.1 150232 2112 pts/1 S+ 16:00 0:00 sudo tail -f td-agent.log root 5042 0.0 0.0 100940 636 pts/1 S+ 16:00 0:00 tail -f td-agent.log td-agent 7721 0.0 1.1 213068 22256 ? Sl 16:10 0:00 /usr/lib64/fluent/ruby/bin/ruby /usr/sbin/td-agent --group td-agent --log /var/log/td-agent/td-agent.log -vv --daemon /var/run/td-agent/td-agent.pid td-agent 7724 0.3 1.5 234868 30248 ? Sl 16:10 0:00 /usr/lib64/fluent/ruby/bin/ruby /usr/sbin/td-agent --group td-agent --log /var/log/td-agent/td-agent.log -vv --daemon /var/run/td-agent/td-agent.pid hoge 7843 0.0 0.0 107460 908 pts/18 S+ 16:11 0:00 grep td-agent
と、プロセスIDを目視で調べてからの
# sudo kill -9 7721 7724
pgrep、pkill使う
pgrep、pkillを使うとわりと簡単にできます。っていうか知りました
pgrep使ってみる
上記と同じプロセスが起動してるとして
# pgrep -f td-agent 5041 5042 7721 7724
と、pgrepを除いた上でプロセスIDのみ返却してくれます。さらに、オプションの-G(gid指定)を使えばカンペキ
# pgrep -f td-agent -G td-agent 7721 7724
これを使って
sudo kill -9 `pgrep -f td-agent -G td-agent`
と、書くも良し、
pgrep -f td-agent -G td-agent | sudo xargs kill
と書いても良しです。
pkillでヤル
上記でもわりとすっきりですがpkillを使うとさらにすっきりです
オプションはpgrepと同じような引数にされているとのことで
※一応確認してからの # pgrep -f td-agent -G td-agent 7721 7724 # sudo pkill -f td-agent -G td-agent # ps aux | grep td-agent root 5041 0.0 0.1 150232 2112 pts/1 S+ 16:00 0:00 sudo tail -f td-agent.log root 5042 0.0 0.0 100940 636 pts/1 S+ 16:00 0:00 tail -f td-agent.log hoge 13971 0.0 0.0 107460 908 pts/18 S+ 16:35 0:00 grep td-agent
かなりすっきり!
こちらを参考にというか、ほぼまるまる参考にさせて頂きました!
→pgrep, pkill を使用してプロセスを殺す