投稿

3月, 2015の投稿を表示しています

CentOS7で特定のプロセスを全部消す

お久しぶりでございます。

先日、CentOS7で、ある時間になったら特定のプロセスを全部削除したいというタスクをこなすことになりました。特定のプロセスとは、今回の場合はwgetです。
バックアップ的な理由で毎日wgetをサーバで実行しているのですが、万が一に備えて、朝の業務開始前までに終わっていないプロセスがあったら、それを削除して中断することにしました。

killコマンドで消せることぐらいしか理解できていなかったので、以下のようにpsコマンドでプロセスを探してパイプでつないでkillすることを思いつきました。



ps -e | grep 任意のコマンド | awk '{system(kill -9 $1)}' 便利だなー
— TearTheSky (@TearTheSky) 2015, 3月 23


するとこんなご指導が。


@TearTheSky その使い方でしたらkillallが使えませんでしょうか
— 塩味 プリン (@sioazike) 2015, 3月 23

"killall 任意のコマンド" だけでいいのか
— TearTheSky (@TearTheSky) 2015, 3月 23
リプライいただいたように、Linuxにはkillallというありがたいコマンドがあるため、無駄にパイプをつながなくても、 killall プロセス名 で、特定の名前のプロセスをすべて削除できるのでした。

ということで、さっそく実験。しかし、コマンドが無いと言われてしまいました…。

あれ、CentOS7にKillallって無いの…?

こういうのはきっとすでに先人が解決してくれているに違いないと思ってググってみました。

Centos 7, Where is killall? : CentOS http://t.co/WhlGCoJCEt あれ、CentOS7にkillallって無い?
— TearTheSky (@TearTheSky) 2015, 3月 23
あ、とりあえずデフォでは使えないんですね…?
killallは、psmisc という、プロセスに関するコマンド群の追加パッケージとしてスタメンから左遷されちゃったみたいです。

なので、yum install psmisc をして psmisc をインストールすると使えるようになります。