- - PR -
シェルファイルでのサービス起動確認について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-04-08 01:02
いつもありがとうございます。
これまでRHEL3上で、サービス起動状況を確認し停止している場合は 起動させるというシェルファイルを使っていたのですが、 OSをRHEL5にしたところ、サービスの起動状況が正しく判定できなくなってしまいました。 できれば、OS別にシェルファイルを分けずに同じシェルファイルで 対処したいのですが、もとのシェルファイルを作っていただいたときに、 私自身がその内容をきちんと理解をしていなかったため、 どこをどう修正すればよいのか困っています。 恐縮ですが、適切な修正方法等をご教授いただければ幸いです。 isAlive=`ps -ef | grep httpd | grep -v grep | wc -l` if [ $[isAlive] = 0 ]; then /etc/init.d/httpd start fi [ メッセージ編集済み 編集者: MACHIKO 編集日時 2008-04-08 01:14 ] | ||||
|
投稿日時: 2008-04-08 05:57
RHEL 3 と 5 の違いが具体的に手許で比較できる状況ではないので推測です(_ _)
おそらく ps -ef の出力形式が異なっているのではないでしょうか。 釈迦に説法かもしれませんが、シェルスクリプトの内容は以下のような意味です。 ・isAlive=`...` の中身 (1) ps -ef : 現在起動しているプロセスの一覧を出力する (2) grep httpd : その中で httpd という文字列を含むものだけを取り出す (3) grep -v grep : (1) の結果には (2) のコマンドが含まれるので、それは除く (4) wc -l : 以上の結果が何行あったかを調べる これで、httpd デーモンが起動されている数が isAlive 変数に入ります。 その次の if...fi 文で、httpd デーモンが起動されていなければ /etc/init.d/httpd start を実行して同デーモンを起動する(起動済みならば何もしない)という処理ですね。 RHEL 3 と 5 で ps -ef の出力内容の違いを調べて対応するのが一番正確ですが、-f よりも情報量の多い出力指定は -l なので、もしかすると ps -el とすると RHEL 3 と RHEL 5 の両方で動作するかもしれません。 ご参考になれば幸いです。 [ メッセージ編集済み 編集者: Gio 編集日時 2008-04-08 06:02 ] | ||||
|
投稿日時: 2008-04-08 09:05
シェルスクリプトそのものに実行権が付与されてないなんて
事はないですよね? | ||||
|
投稿日時: 2008-04-09 09:54
RHELは触ってないのでわからないのですが肝心の
ps -ef | grep httpd | grep -v grep | wc -l の出力は確認しましたか? もし期待通りの結果が得られない(常に0とか)のなら httpdがapacheやapache2になってたりしません? あと、蛇足ですが ps -ef | grep [h]ttpd -c でも良いはずです。 | ||||
|
投稿日時: 2008-04-09 10:19
Gioさん、zumeさん、ピザ男さん
ありがとうございます。 画面上から入力すると正しい値が返ってきていました。 シェルファイルの実行権限も問題ありませんでした。 同じコマンドをコピーして、iptablesの確認もしたかったのですが、 そちらは"0"が返されてしまいます。 iptablesは確認できないものなのでしょうか? | ||||
|
投稿日時: 2008-04-09 11:52
こんにちは.
iptables は特定の daemon が動いているわけではないので 「同じ command」では確認できないと思います. iptables -L で Netfilter の status が確認できると思います. ちなみに「httpd が起動しているか判定できない」のでしょうか? httpd が起動していない場合にくだんの shell script で httpd を起動できないのではなく? 確認してないので間違っているかもしれませんが, /etc/init.d/httpd start って RHEL5 では path は正しいのでしょうか? ※基本的に service httpd start しているので... | ||||
|
投稿日時: 2008-04-14 13:43
Kazさん
報告が遅くなり大変失礼いたしました。
なるほど、了解です。 いろいろなサービスで確認してみたのですが、同じコマンドで確認できない サービスもたくさんありました。 特定のdaemonが動いていないサービスも、シェルでサービスの状態確認が できれば嬉しいのですが、そのあたりはもう少し勉強してみて それでどうしてもだめなら、改めてまた皆さんに教えを請うようにします。 ありがとうございました。 |
1