質問: apache停止してたら再起動させるcron 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: であるという記述もありcron実行時にはshを使う? ようなのですが。。。ググっても解決できずにいます! thenとendifを入れてもだめです。 おそらく1行で実行する構文?がよくないのだと思っています。 セミコロン;とかを入れてみてもうまくいきませんでした。 どなたかおわかりでしょうか
回答: 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名とバージョンがあった方が答えやすいと思います。