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를 시작하면 웹 서버가 실행되지 않는 것을 발견합니다. 동일한 명령을 실행하려고 하면 다음과 같습니다.
# 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은 완전히 다른 서비스입니다.
웹 서버를 시작하려면 다음을 수행해야 합니다.
apachectl -k stop
-> 실제로wpa_supplicant
서비스가 중지됩니다!wpa_supplicant
서비스 다시 시작- 현재
apachectl -k start
사용 가능하며apache2
서비스가 실행 중입니다.
이는 물론 받아들일 수 없는 일이다. 그리고, 기계가 무인 상태가 될 것이기 때문에 그것을 고쳐야 합니다.
하지만 먼저 왜 이런 일이 일어나는지 이해해야 했습니다. 어떻게 다른 PID가 있다고 생각할 수 있습니까?
답변1
이전 Apache 서버에는 버그가 있었습니다.
오래된 Apache PID 파일로 인해 프로세스가 시작되지 않을 수 있습니다. #3553
/var/run
해당 PID 파일이 있는지 확인 하고 삭제하세요.
Apache를 업그레이드하십시오.