RPi3のBuildroot環境で奇妙な問題が発生しました。開始するには、このinit.dサービスがありますapache2
(バージョン2.4.57)。
# cat /etc/init.d/S50apache
#!/bin/sh
case "$1" in
start|restart|graceful|graceful-stop|stop)
apachectl -k $1
;;
reload)
apachectl -k restart
;;
*)
echo "Usage: $0 {start|restart|reload|graceful|graceful-stop|stop}"
exit 1
esac
exit $?
通常、RPi3を起動すると、Webサーバーが実行されていないことがわかります。同じコマンドを実行しようとすると、次のようになります。
# apachectl -k start
私は得る:
httpd (pid 288) already running
しかし:
# ps aux | grep httpd
477 root grep httpd
そして:
# ps aux | grep 288
288 root /usr/sbin/wpa_supplicant -u
457 root grep 288
明らかに(何かが欠けている場合)、apache2
実行されず、PID 288はまったく異なるサービスです。
Webサーバーを起動するには、次の手順を実行する必要があります。
apachectl -k stop
->実際にwpa_supplicant
サービスが停止されます!wpa_supplicant
サービスの再起動- 現在
apachectl -k start
利用可能で、apache2
サービスが実行中です。
これはもちろん受け入れられないことだ。そして、機械が無人状態になるのでそれを修正しなければなりません。
しかし、まずなぜこのようなことが起こるのか理解しなければなりませんでした。どのように異なるPIDがあると考えることができますか?
答え1
以前のApacheサーバーにはバグがありました。
古い Apache PID ファイルが原因でプロセスが開始されないことがあります。 #3553
/var/run
そのPIDファイルがあることを確認して削除してください。
Apacheをアップグレードします。