Apache는 잘못된 PID 선언을 거부합니다.

Apache는 잘못된 PID 선언을 거부합니다.

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은 완전히 다른 서비스입니다.

웹 서버를 시작하려면 다음을 수행해야 합니다.

  1. apachectl -k stop-> 실제로 wpa_supplicant서비스가 중지됩니다!
  2. wpa_supplicant서비스 다시 시작
  3. 현재 apachectl -k start사용 가능하며 apache2서비스가 실행 중입니다.

이는 물론 받아들일 수 없는 일이다. 그리고, 기계가 무인 상태가 될 것이기 때문에 그것을 고쳐야 합니다.

하지만 먼저 왜 이런 일이 일어나는지 이해해야 했습니다. 어떻게 다른 PID가 있다고 생각할 수 있습니까?

답변1

이전 Apache 서버에는 버그가 있었습니다.

오래된 Apache PID 파일로 인해 프로세스가 시작되지 않을 수 있습니다. #3553

/var/run해당 PID 파일이 있는지 확인 하고 삭제하세요.

Apache를 업그레이드하십시오.

관련 정보