マシン起動のつど、httpdが起動したりしなかったりと不安定です。
(参考)http://www.hatena.ne.jp/1108189175
再コンパイルしようかとも思いましたが、
いまのところ、httpdを監視して起動していないときにはApacheを起動するようなシェルスクリプトを作成してやりたいと思います。
ですが、すいません。私はプログラムはまったくお手上げです。
どこかにか、このシェルが公開されていないでしょうか。
解決したときには、先着の1名様に1500ptお支払いします。
監視デーモンはhttpdでhttpdが起動してないときには# /usr/local/apache2/bin/apachectl start
で起動させたいです。
よろしくお願いします。
#!/bin/csh
# httpdの存在チェック
ps -ef | grep httpd | grep -v grep > /dev/null
if ( $status == 0 ) then
# 既に起動している
exit 1;
endif
# httpdの起動
/usr/local/apache2/bin/apachectl start
exit $status;
http://www.linux.or.jp/JM/html/cron/man5/crontab.5.html
Manpage of CRONTAB
きれいなやり方ではないですが。。。
スーパーユーザ(root)になって、
# EDITOR=vi
# export EDITOR
# crontab -e
とコマンドを入力し(#はプロンプト)、
0 * * * * /usr/local/apache2/bin/apachectl start /dev/null 2>&1
と記述してみてはいかがでしょうか?毎時0分に起動処理が動作します。
※ アンド”&”は半角にしてください。投稿するとエラーになるようなので、全角にしてます。
起動済みの場合は「already running」とエラーになりますが、影響は無いはずです。
毎時0分じゃなくしたい場合はURLを参考に変えてみてください。
1.以下の内容のシェルを作成する。
# vi /tmp/a.sh
2.実行パーミッションをつける
# chmod +x /tmp/a.sh
3.デーモンとして起動する
# nohup /tmp/a.sh </dev/null >/dev/null 2>&1 &
4.停止する時は
# ps -ef | grep /tmp/a.sh | grep -v grep
でプロセスIDを特定し、
# kill -9 {プロセスID}
===========ここから==========
#!/bin/sh
while true #以下をずっと繰り返す
do
if [ ”`ps -ef | grep /usr/local/apache2/bin/httpd | grep -v grep`” = ”” ] ; then #起動しているプロセス名に”/usr/local/apache2/bin/httpd”がなかったら
/usr/local/apache2/bin/apachectl start #apacheの起動コマンドを実行する
fi
sleep 60 #60秒待つ
done
===========ここまで==========
遅くなりましてすいませんでした。
dekusamaさんからの回答でシェルを少し変更しましcronでまわしたら、検証機ではうまくいきました。
#!/bin/sh
if [ ”`ps -ef | grep /usr/local/apache2/bin/httpd | grep -v grep`” = ”” ] ; then #process httpd ng
/usr/local/apache2/bin/apachectl start #httpd start
fi
ですが、実機ではうごかなかったです。
あらためて質問したいと思います。
ありがとうございました。
ありがとうございます。m(_ _)m
残り2件回等をいただいてますので、できた方で先着の方にポイントをお支払いします。
申し訳ありませんが、2名の方には20ptのお支払いで了承いただきたいと思います。