- ベストアンサー
シェルスクリプトについて
linuxにてプロセスを「kill」する シェルスクリプトを作成したいと思います。 具体的な内容としては、 sshd接続しているすべてのプロセスを 「kill」したいと考えています。 私が考えている手法としましては、 「リダイレクト」と「sed」を利用し、 プロセスIDをファイルに出力。そのプロセスIDを実行する手法ですが、 ファイルに出力されたプロセスIDを変数にセットする方法が わかりませんので、どのような方策をとればよいのかわかりません。 また、上記の手法以外にも可能なやり方がございましたら、 ご教授のほどよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ディストリビューションが分からないのでRedhat系の例です。 ちなみに、エラー処理等は考慮していません。 ## sshdのプロセスを全部killしてサービスを開始(親デーモンまでkillするため) # pkill sshd ; service sshd start 親のデーモンをkillしたくないのであれば面倒ですが # pgrep sshd | grep -v `pgrep -P 1 sshd` | xargs kill とやればいいでしょう。 どちらも実行した時に「プロセスがない」といったメッセージがでるかもしれませんが、親プロセスを先にkillしたため子プロセスが見つからないからです。 最近のディストリビューションにはpgrep, pkillコマンドは用意されていると思いますがもし無いようなら killallコマンドとかpidofコマンドとかを使うのが宜しいかと。
お礼
ご回答のほどありがとうございます。 なるほど、このような手法があるとはしりませんでした。 早速利用させて頂きます。 この度はありがとうございました。