Apache 프로세스를 중지할 수 없습니다.

Apache 프로세스를 중지할 수 없습니다.

업데이트:댓글에 응답:

아파치 프로세스를 확인하십시오.

$ ps a | grep apache 3
grep: 3: No such file or directory
$ ps a | grep apache
 4514 pts/0    S+     0:00 grep --color=auto apache
$ ps a | grep apache2
 4516 pts/0    S+     0:00 grep --color=auto apache2

아파치 오류 로그 확인

$ tail /var/log/apache2/error.log
[Sun Aug 07 03:14:19 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations
[Mon Aug 08 03:13:58 2011] [notice] Graceful restart requested, doing restart
[Mon Aug 08 03:14:00 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations
[Mon Aug 08 09:03:16 2011] [notice] caught SIGTERM, shutting down
[Mon Aug 08 09:05:47 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations

원래의:아파치를 중지했는데 왜 여전히 동일한 수의 프로세스가 실행되고 있습니까?

$ ps -A | grep apache
 1663 ?        00:00:00 apache2
 1667 ?        00:00:00 apache2
 1668 ?        00:00:00 apache2
 1669 ?        00:00:00 apache2
 1670 ?        00:00:00 apache2
 1671 ?        00:00:00 apache2
$ /etc/init.d/apache2 stop
 * Stopping web server apache2                            [ OK ] 
$ ps -A | grep apache
 1663 ?        00:00:00 apache2
 1667 ?        00:00:00 apache2
 1668 ?        00:00:00 apache2
 1669 ?        00:00:00 apache2
 1670 ?        00:00:00 apache2
 1671 ?        00:00:00 apache2

감사해요!

답변1

이는 Apache가 제대로 중지를 거부하거나좀비 프로세스. 전자의 경우 다음을 사용하여 실행 중인 모든 프로세스를 종료할 수 있습니다 sudo killall -9 apache2. 그러나 후자의 경우에는 그것들이 사라질 때까지 기다려야 합니다. Apache가 제대로 중지하기를 원하지 않는 경우 실제로 하고 싶은 일은 무슨 일이 일어나고 있는지 조사하는 것입니다. 하지만 무슨 일이 일어나고 있는지 정확히 알아내는 것은 어려울 수 있습니다.

프로세스 ID의 대화형은 strace어떤 사이트가 작동하고 문제를 일으키는지에 대한 단서를 제공할 수 있습니다. 위에서 ps -A첫 번째 프로세스를 확인할 수 있습니다.

strace -p 1663

이는 진행 중인 작업에 대한 실시간 출력을 제공하는 실행 중인 프로세스 스택 추적에 연결됩니다. 언제든지 Ctrl+C

추가 리소스는 Apache의 기본 오류 로그입니다. 이 /var/log/apache2/error.log로그는 상당한 양의 로그를 가져와서 자세한 내용을 훑어보고 싶을 것입니다. 문제가 실행 중인 지속적인 문제인 경우

tail -f /var/log/apache2/error.log

이는 strace실시간으로 실행되는 것과 유사합니다. 마지막 N 줄의 경우 50, 100, 282 등과 같은 양수 로 -f바꿉니다 .-##

답변2

서비스를 중지할 수 있는 적절한 권한이 있는지 확인하세요.

실행하는 경우:

service apache2 stop

다음과 같이 하면 오류가 발생하지 않습니다.

* 웹 서버 apache2 중지 중

노력하다:

sudo service apache2 stop      

답변3

나도 같은 문제가 있었고 다음을 시도했습니다.

sudo apache2ctl stop

서비스를 중지하고

sudo apache2ctl start

다시 시작하려면.

그것은 나에게 효과적이며 가능한 제안을 환영합니다.

답변4

프로세스를 요청할 수 있습니다(신호그들에게) 그만 두십시오. 명령 kill은 이를 수행하는 방법입니다. 프로세스의 프로세스 ID(PID)를 알고 있다면 터미널에서 아래 명령을 실행하여 확인할 수 있습니다.

kill PID_OF_YOUR_PROCESS

위의 예에서는 PID에 기본 TERM 신호(코드 15)를 보냅니다. 신호코드는 다음에서 찾아보실 수 있습니다.kill 매뉴얼 페이지( man kill).

프로그램이 전송된 TERM 신호를 무시하는 경우에도 KILL 신호(코드 9)를 전송하여 좀 더 압력을 가하는 것이 가능합니다. 프로세스가 저장되지 않은 데이터를 저장하지 않을 수 있으므로 이 신호는 최후의 수단으로 사용됩니다.

-SIGNAL_CODE프로세스 ID 앞에 첫 번째 매개변수로 a를 지정하면 프로세스에 특정 신호가 전송됩니다. 명령 의 또 다른 유용한 기능은 kill다음 예와 같이 더 많은 PID를 지정할 수 있다는 것입니다.

kill -9 PID1 PID2 PID3 PID4

해당 라인을 사용하여 Apache 프로세스를 종료해 보십시오 kill -9. 무언가 방해가 되지 않는 한 중단해야 합니다.

관련 정보