AIと戦って、あなたの人生のリスク診断 >>

apache停止してたら再起動させるcron

アパッチ停止時してたら再起動させるcronを設定したいのですが、cronに以下を設定してもうまくいきません。
set http=`ps aux | grep -v grep | grep -c http` ; if ( $http < 2 ) /usr/local/sbin/restart_apache

cronエラーとしてマスターユーザに以下エラーが来ます。
Syntax error: word unexpected (expecting "then")

シェルがX-Cron-Env: <SHELL=/bin/sh>であるという記述もありcron実行時にはshを使う?
ようなのですが。。。ググっても解決できずにいます!

thenとendifを入れてもだめです。
おそらく1行で実行する構文?がよくないのだと思っています。
セミコロン;とかを入れてみてもうまくいきませんでした。

どなたかおわかりでしょうか

このQ&Aに関連する最新のQ&A

A 回答 (2件)

http=`ps aux | grep -v grep | grep -c http` ; echo $http |mail -s test root ; fi


uが余計ですね。
http=`ps ax | grep -v grep | grep -c http` ; echo $http
を使ってみてはいかがでしょうか?
auxになっていると行の長さが長すぎるためにhttpにマッチできません。

あと、crontabはSHELL=の値を見てもわかるとおり、デフォルトでsh (bshのこと) です。
cshの構文は使えません。
...というか、普通シェルスクリプトはcshでは書きません。
たしかに、BSD系OSのrootのシェルはcshですし、FreeBSDなんかtcshだったりしますが、それでもスクリプトは基本shで書きます。
あと、リスタートするのも/usr/local/etc/rc.d/apache22 restartとかではダメなんでしょうか? (スクリプトの正確な名前や位置はApacheのバージョン及びOSによって変わります)

最後に、BSD系OSもいろいろあるのでOS名とバージョンがあった方が答えやすいと思います。
    • good
    • 0
この回答へのお礼

確かに!auxではだめでした。知り合いにちょいと教えてもらい以下で改善です!
( ps -ax | grep -v grep | grep -q http ) || /usr/local/etc/rc.d/apache.sh start

ご協力ありがとうございました!

お礼日時:2010/02/18 23:10

X-Cron-Envというのはよく分からないのですが、環境変数?


この変数を変更はできないんでしょうか?
おそらく、cron時にはshを使うのでしょう。

1行で書いているのは直接crontabに書いているからでしょうか?
シェルスクリプトを作って、それを実行させる方がきれいな気もしますし、
シェルスクリプトの中でシェルも指定(変更?)できそうです。

もし、shで1行で書くとしたら、

http=`ps aux | grep -v grep | grep -c http` ; if [ $http -lt 2 ]; then /usr/local/sbin/restart_apache; fi

でどうでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。うまく行きませんでした。
LINUXなら教えていただいた1行コマンドでいけますね

やろうとしてる事が単純なのでcrontabに直接1行で書いてしまいたいのです。

シェル変更に関しても/usr/local/bin/bash を先に入れて1行で試しましたが駄目でした。。

http=`ps aux | grep -v grep | grep -c http` ; echo $http |mail -s test root ; fi
念の為、上記試したところ、$httpに数値がはいってないようでした。
rootへ送信される本文は2となってしまいます。

set httpから初めてもhttpへ変数としてhttpの起動数を入れられてないようです。
cronの中で指定するときは何か特別なのが必要なのでしょうか。。

お礼日時:2010/02/18 13:36

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qtomcatの再起動とApacheの設定を自動化

Apache上のWEBサイトを通常のサイトからメンテナンス中へ切り替える

tomcat を再起動

tomcatの起動を確認後

Apache上のWEBサイトをメンテナンス中から通常サイトへ切り替え

これを全て時間を指定して(例えばAM4:00に)自動で行いたいのですが、何か方法はありますでしょうか?
OSは、Cent OSです。

Aベストアンサー

おっと、それは失礼しました。
Apacheの設定ファイル内の変更は、sed/awk/perlあたりで一行を無理矢理書き換えるとか、RCSを使ってリビジョンコントロールするとか、あるいは単にmvするとか、手段自体は色々あるかと思います。

ただ、エンタープライズレベルでエラーページを出す場合は、通常、負荷分散装置でやりますね。
OSSでどこまで出来るかは私も認識していないのですが、PoundやUltraMonkey-L7について調べてみると、そういった機能が見つかるかも知れません。
あるいは、Reverse Proxyを置けばその問題を軽減できるかも。

単純に、設定変更してGraceful Restartでも、それほど大きくないサイトなら困らないと思いますが、本当に止められないのであればそういったことが考えられます。
5秒程度新規アクセスが切れたとしても、メンテナンス前後のことであれば、ユーザの利便性やストレスはそんなに悪化しないと思いますけどね…。

Qレッドハットのバージョン確認方法

自分のサーバで使用しているREDHATのバージョン確認はどうすればいいのでしょうか?

more /etc/issue
とやっても英文しか出てきませんでした。

uname -all
でもカーネルのバージョンは出るのですが、REDHATのバージョンは出ませんでした。

Aベストアンサー

> more /etc/issue
> とやっても英文しか出てきませんでした。

その英文にはRedHatのバージョンは書いてなかったのですか?
書いていなかったとしたら、管理者により編集されている可能性
がありますね。

cat /etc/redhat-release

ではいかがでしょう?
やっぱり英文ですけど。

rpm -q redhat-release

でもいいかも


人気Q&Aランキング