서비스 중지 후 Apache 서버가 자동으로 시작됩니다.

서비스 중지 후 Apache 서버가 자동으로 시작됩니다.

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

upstart, 서비스 관리자는 다음으로 설정된 경우 httpd를 다시 시작할 수 있습니다.respawn.

apachectl stop알림 없이 프로세스 중지upstart

노력하다:

service httpd stop

그런데 stopApache에 유사한 명령을 실행하면 새로운 연결 수락이 중지됩니다. gracefuls또한 현재 열려 있는 연결을 완료할 수도 있습니다 .

답변2

서비스 확인

httpdCentOS 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/initUpstart는 서비스 스크립트를 유지 관리합니다. 파일로 이동하여 서비스를 비활성화하고 구성을 다시 로드해야 합니다. 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. 누군가가 그것을 다시 살려냈을 수도 있습니다.

관련 정보