httpd가 중지된 후 자동으로 시작되는 원인은 무엇입니까?
Bash 스크립트에서는 먼저 Apache 웹 서버를 중지해야 합니다. 스크립트는 다음과 같습니다.
apachectl stop;
while pgrep httpd; do sleep 1; done
echo "[Apache server stopped]"
스크립트를 실행하면 실행 중인 프로세스가 없을 때까지 실행 중인 아파치 프로세스를 인쇄하고 인쇄합니다.[Apache 서버가 중지되었습니다.]
그런 다음 명령을 실행하면 pgrep httpd
아무것도 인쇄되지 않지만 서버에서 호스팅하는 웹 사이트에 들어가면 pgrep httpd
일부 httpd 프로세스가 인쇄됩니다.
이것이 아파치를 중지하는 올바른 방법입니까? 실행 후 자동으로 시작되는 이유는 무엇입니까 apachectl stop
? 만약에 관련이 있다면활동적인 시간을 유지하다, 실행 중인 하위 프로세스를 강제로 중지하는 방법은 무엇입니까?
편집: 이는 명령줄에서 또는 명령을 실행하는 경우에도 service httpd stop
마찬가지입니다 .apachectl stop
답변1
답변2
서비스 확인
httpd
CentOS 6에서는 서비스에 액세스할 수 있는지 조사하겠습니다 .
$ service --status-all |& grep httpd
httpd is stopped
다음을 사용하여 이 서비스를 비활성화할 수 있습니다 chkconfig
.
$ chkconfig --list | grep httpd
httpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
$ sudo chkconfig httpd off
$ chkconfig --list | grep httpd
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
그런데 액세스하면 계속 시작되나요?
CentOS 6을 사용하고 있으므로 아마도 Upstart를 사용하게 될 것입니다. httpd
서비스가 통제되고 있는지 확인할 수 있습니다 .
$ initctl list
목록에 표시되지만 표시할 구성이 없습니다. 문제에 대한 귀하의 설명에 따르면 귀하의 시스템은 httpd
다음과 같이 설정되어 있다고 가정합니다.
httpd stop/waiting
내가 이해한 바에 따르면 이는 Upstart가 서비스에 액세스 중인 것을 확인하면 해당 서비스를 다시 시작한다는 의미입니다. 이 httpd
경우 /etc/init
Upstart는 서비스 스크립트를 유지 관리합니다. 파일로 이동하여 서비스를 비활성화하고 구성을 다시 로드해야 합니다. respawn
다음과 같은 원인이 있을 수 있습니다 .
예
$ more /etc/init/prefdm.conf
# prefdm - preferred display manager
#
# Starts gdm/xdm/etc by preference
start on stopped rc RUNLEVEL=5
stop on starting rc RUNLEVEL=[!5]
console output
respawn
respawn limit 10 120
exec /etc/X11/prefdm -nodaemon
인용하다
답변3
에서 찾아보세요 /etc/inittab
. 누군가가 그것을 다시 살려냈을 수도 있습니다.