• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:apache停止してたら再起動させるcron)

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

このQ&Aのポイント
  • アパッチ停止時してたら再起動させるcronを設定したいのですが、cronに以下を設定してもうまくいきません。
  • cronエラーとしてマスターユーザに以下エラーが来ます。
  • シェルがX-Cron-Env: <SHELL=/bin/sh>であるという記述もありcron実行時にはshを使う?ようなのですが。。。ググっても解決できずにいます!

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

  • ベストアンサー
回答No.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名とバージョンがあった方が答えやすいと思います。

xuniuni
質問者

お礼

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

その他の回答 (1)

  • seiiiichi
  • ベストアンサー率41% (79/190)
回答No.1

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 でどうでしょうか?

xuniuni
質問者

お礼

ありがとうございます。うまく行きませんでした。 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の中で指定するときは何か特別なのが必要なのでしょうか。。

関連するQ&A