• ベストアンサー

シェルスクリプトについて

linuxにてプロセスを「kill」する シェルスクリプトを作成したいと思います。 具体的な内容としては、 sshd接続しているすべてのプロセスを 「kill」したいと考えています。 私が考えている手法としましては、 「リダイレクト」と「sed」を利用し、 プロセスIDをファイルに出力。そのプロセスIDを実行する手法ですが、 ファイルに出力されたプロセスIDを変数にセットする方法が わかりませんので、どのような方策をとればよいのかわかりません。 また、上記の手法以外にも可能なやり方がございましたら、 ご教授のほどよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • anights
  • ベストアンサー率72% (35/48)
回答No.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コマンドとかを使うのが宜しいかと。

it2007
質問者

お礼

ご回答のほどありがとうございます。 なるほど、このような手法があるとはしりませんでした。 早速利用させて頂きます。 この度はありがとうございました。

関連するQ&A