2016-04-18 11 views
-1

バッシュスクリプト:Apacheサーバが稼働しているか、私はbashスクリプトを使用して、以下のステップを達成しようとしていない

1)Apache Serverのステータスを確認します。

2)起動している場合は何もしないでください。そうでない場合は、サーバーが実行されていない場合は、最初の失敗のメールを送る3.

3)に進みますと、再起動後、サーバー

4)を再起動し、もう一度状態を確認し、送信ここで

確認メール

は私のコードです:

#checking if Apache is running or not 
ps auxw | grep apache2 | grep -v grep > /dev/null 

if [ $? != 0 ] 
then 
mailx -s "Apache web server is down, Trying auto-restart" -$ 

# web server down, restart the server 
sudo /etc/init.d/apache2 restart > /dev/null 
sleep 10 

#checking if apache restarted or not -- This is not working 
ps auxw | grep apache2 | grep -v grep > /dev/null 
if [ $? = 0 ] 
then 
    mailx -s "Apache restarted succesfully" -r "$SENDEREMAIL" "$NOTIFYEMAIL"  < /$ 
else 
    mailx -s "Restart Failed, try restarting manually" -r "$SENDEREMAIL" "$NOTIFYEMAIL" <$ 
fi 
fi 

コードは、ステップ3まで正常に動作し、再起動して送信した後に、サーバーの状態を確認することができませんステップ4すなわちスクリプトに取り組んでいない/失敗しています確認メール。 誰かが私が間違っている場所を教えてもらえますか?

+0

"set -x"をこれの先頭に追加して再実行し、その出力を追加してください。 – Dave

+1

あなたは 'apachectl status'を使用していない特別な理由はありますか? – tripleee

+0

私はなぜdownvoteを知っているかもしれませんか?問題は、上記のコメントが好きです.SO – user4943236

答えて

2

これを試してみてください:

#checking if Apache is running or not 

if ! pidof apache2 > /dev/null 
then 
    mailx -s "Apache web server is down, Trying auto-restart" 

    # web server down, restart the server 
    sudo /etc/init.d/apache2 restart > /dev/null 
    sleep 10 

    #checking if apache restarted or not 
    if pidof apache2 > /dev/null 
    then 
     message="Apache restarted successfully" 
    else 
     message="Restart Failed, try restarting manually" 
    fi 
    mailx -s "$message" -r "$SENDEREMAIL" "$NOTIFYEMAIL" 
fi 

注:すべてののmailxラインは、末尾-$< /$、または<$を持っていた - これらは、タイプミスのように見えたし、削除されました。

+0

'grep -v grep'は一般的な反パターンです。あなたは 'ps auxw | grep -q '[a] pache2''またはそれ以上の方は 'pidof apache2' – tripleee

+0

「これは動作していません」というコメントを削除するかもしれません(: – tripleee

+0

私は前に' pidof'を信じていたと思いますが、 OPのシステム上で、それが失敗する可能性のあるパーミッション条件があった場合のマニュアルです。私はそれについては聞いていませんでした[治療](http://stackoverflow.com/questions/9375711/more-elegant-ps-aux-grep -v-grep) 'grep -v grep'の前に、これを見て、素晴らしいものを探しました。Tnx!提案されたコード編集が保留中です... – agc

関連する問題