OSXでターミナルにApacheのステータスを表示するにはどうすればよいですか?


11

私は私のLinuxサーバ上で私が入力したときに気づいのapachectlそれは少し私を与えるが、のような有用なフィードバック再起動しrestartingた後、[ok]または[fail]行末に。それほど多くはありませんが、少なくとも何が起こっているのかはわかっているので、ログを確認できます。

私のOS Xでは何も得られません。すぐ次の行だけ:

sh-3.2# /usr/sbin/apachectl stop   
sh-3.2# /usr/sbin/apachectl start
sh-3.2# 

これらの「デバッグ」機能を有効にするにはどうすればよいですか?


私はOS Xに慣れていませんが、initスクリプトを編集してecho行を追加できます。
クォンタム2011

そのスクリプトはどこですか そして、どの行に追加echoする必要がありますか?すみません、私は周りに新しいので詳細が必要です:\
mgPePe

私はOS Xの人ではありませんが、おそらく「ノーニュースは良いニュースではない」というUnixの哲学に従っているだけで、何か問題がある場合にのみあなたを悩ませ始めますか?
Janne Pikkarainen、2011

うーんサイレントエラーは役に立たないので、私は本当にファンではありません
mgPePe

の内容を投稿してください/usr/sbin/apachectl
クォンタム2011

回答:


5

apachectlラッパースクリプトで、最後にこのようなものを貼り付けてはいかがですか。

tail -5 /var/log/httpd/error_log

あなたは通常のスタートアップでこのようなものを見るはずです

  • [2011年4月22日23:39:20] [通知]ダイジェスト:
    ダイジェスト認証のシークレットを生成しています...
  • [2011年4月22日23:39:20] [通知]ダイジェスト:完了
  • [2011年4月22日23:39:20] [警告] pidファイル
    /mlk/apache/pid/httpd.pidが上書きされました-以前のApache実行のクリーンでないシャットダウン?
  • [2011年4月22日23:39:20] [通知] Apache / 2.0.63(Unix)DAV / 2が設定されました- 通常の操作を再開します

それ以外の場合は、エラーの少なくとも一部がここに表示されます。キーワードは上記で強調表示されています。

追加:/ usr / sbin / apachectlはrootが所有しています。これを行うには、特権ユーザーである必要があります。sudo vi / usr / sbin / apachectl

ファイルの最後に移動し、これを「esac」行と「exit $ ERROR」行の間に挿入します。すなわち。

esac
sleep 2; tail -5 /var/log/httpd/error_log
exit $ERROR

これにより、スクリプトで実行したアクションに関係なく、最後の数行が出力されます(開始、停止、再起動)。あなたはそれをcase文の始めの部分だけに入れたいかもしれません。


それは可能な解決策のように聞こえます。そして、どのようにして再起動コマンドごとに自動的に実行されるようにアタッチできますか?
mgPePe

/ usr / bin / apachectlを確認するには、自宅のmacosサーバーにSSHで接続する必要がありました。上記の回答を参照して、ファイルを編集するコマンドを追加しました。
マイケルヘンリー

30

Macでも同じ問題があります。Apacheを起動しようとして何も起こらない場合は、すぐにこのコマンドを実行します。私の場合、問題は常にApache構成ファイルにあるようです。

apachectl configtest

これをありがとう。私自身もこの問題に遭遇しており、自作のSQLiteを更新すると、自作のPHPがApacheのエラーを引き起こし、configtest以外の場所には表示されないことがわかりました。
AlexMax 2013年

ありがとう、ありがとう、ありがとう!!!これは私の正気を救ったばかりです!!!
そして最後に

1
このコマンドの短いバージョンはapachectl -t
イクイマン

このコマンドは、Apache httpd構成(httpd.conf)に構文エラーがないかどうかを通知します。プロセスが実行されているかどうかを確認するには、「htop」を実行してからF4を実行し、「httpd」でフィルタリングして、httpdによって生成されたすべてのプロセスを確認します。
Puneet Lamba

8

apachectlMacでは、一部のlaunchctlコマンドのラッパーです(ファイルを調べてください)。残念ながら、launchctlは、の起動で問題が発生したときにエラーコードで終了しないhttpdため、スクリプトが何かを表示しようとしても、それを表示する簡単な方法はありません。

自分で実行できる基本的なチェックは、apachectl startコマンドの後でApacheプロセスの存在をチェックすることです 。

ps aux | grep httpd

ある意味で、「macosxで設定できるデバッグ情報はありませんが、これは、Apacheサーバーが実行されているかどうかを確認する方法です」と言っています。
mgPePe

はい、それで終わりです。
スヴェン

0

netstatコマンド付きのmacOSでは、すべてのネットワーク接続を表示します。「リッスン」接続のみをフィルタリングして、http(s)サーバーを表示できます。

次のコードでbashファイルを作成できます。

status="$(netstat -at | grep LISTEN | grep *.http)"
count="$(echo "${status}" | grep -Ev "^$" | wc -l)"

if [ ${count} -eq 0 ] ; then
    echo " Apache server is not running"
fi   

echo "${status}" | 
while IFS= read -r line
do
    echo " ${line}"
done

サーバーが停止したときの結果はsudo apachectl -k stop次のとおりです。

Apache server is not running

サーバーが実行sudo apachectl -k stopされているときの結果は次のようになります。

tcp46      0      0  *.https                *.*                    LISTEN     
tcp46      0      0  *.http                 *.*                    LISTEN     

この例では、2つのサーバーが実行されています。1つはhttpsでもう1つはhttpです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.