Solaris9でApache-2.0.53をインストールして自動起動するようにしましたが、

マシン起動のつど、httpdが起動したりしなかったりと不安定です。
(参考)http://www.hatena.ne.jp/1108189175
再コンパイルしようかとも思いましたが、
いまのところ、httpdを監視して起動していないときにはApacheを起動するようなシェルスクリプトを作成してやりたいと思います。
ですが、すいません。私はプログラムはまったくお手上げです。
どこかにか、このシェルが公開されていないでしょうか。
解決したときには、先着の1名様に1500ptお支払いします。
監視デーモンはhttpdでhttpdが起動してないときには# /usr/local/apache2/bin/apachectl start
で起動させたいです。
よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/02/24 14:49:05
  • 終了:--

回答(3件)

id:dev_zer0 No.1

dev_zer0回答回数332ベストアンサー獲得回数252005/02/24 17:58:45

ポイント20pt

#!/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;

id:meichi

ありがとうございます。m(_ _)m

残り2件回等をいただいてますので、できた方で先着の方にポイントをお支払いします。

申し訳ありませんが、2名の方には20ptのお支払いで了承いただきたいと思います。

2005/02/25 10:39:38
id:sadcns No.2

sadcns回答回数53ベストアンサー獲得回数02005/02/24 18:21:06

ポイント20pt

きれいなやり方ではないですが。。。

スーパーユーザ(root)になって、

# EDITOR=vi

# export EDITOR

# crontab -e

とコマンドを入力し(#はプロンプト)、

0 * * * * /usr/local/apache2/bin/apachectl start /dev/null 2>&1

と記述してみてはいかがでしょうか?毎時0分に起動処理が動作します。

※ アンド”&”は半角にしてください。投稿するとエラーになるようなので、全角にしてます。

起動済みの場合は「already running」とエラーになりますが、影響は無いはずです。

毎時0分じゃなくしたい場合はURLを参考に変えてみてください。

id:dekusama No.3

dekusama回答回数4ベストアンサー獲得回数02005/02/24 19:00:53

ポイント1500pt

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

===========ここまで==========

id:meichi

遅くなりましてすいませんでした。

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

ですが、実機ではうごかなかったです。

あらためて質問したいと思います。

ありがとうございました。

2005/03/02 09:36:05
  • id:dasm
    検証機で動いて実機で動かない件について

    1. path の順序の関係で GNU の ps を使っている
    2. httpd の path の違い (grep するときに ”httpd” だけで大丈夫?)
    3. 単にユーザに権限が無い
    ではないかなぁと推測。

    nohup するなら普通に init.d に置けばよいのでは? と思いますが、Solaris の場合は daemon の頭に S とか K とかつけるのが面倒といえば面倒ですかね。
  • id:dev_zer0
    Re:検証機で動いて実機で動かない件について

    4. 実機ではcrondが動いていない
    5. うっかりシェルに実行権限を付け忘れた
  • id:dasm
    Re(2):検証機で動いて実機で動かない件について

    >4. 実機ではcrondが動いていない
    >5. うっかりシェルに実行権限を付け忘れた
    ありえますね。
    5. が有力かも。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません