아파치 프로세스를 중지 할 수 없습니다


16

업데이트 : 의견에 응답 :

아파치 프로세스 확인 :

$ 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

Original : 아파치를 멈췄지만 왜 여전히 같은 수의 프로세스가 실행되고 있습니까?

$ 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. 웹 브라우저에서 웹 서비스를 계속 사용할 수 있습니까? 2. 프로세스 상태를 확인하십시오. 그들은 "좀비 프로세스"ps a | grep apache 3. 오류 로그를 확인하십시오. tail /var/log/apache/error.log
SamK

1. 파이어 폭스를 사용하고 있습니다. 내 노트북입니다. 2와 3은 내 업데이트를 참조하십시오.
모든

이 'apache2 -k stop'또는 'apache2 -k restart'를 사용해 보셨습니까? 또는 시스템을 다시 시작 하시겠습니까?
blade19899

답변:


28

아파치가 잘 멈추지 않거나 좀비 프로세스 가있을 때 이런 일이 가끔 일어날 수있다 . 전자의 경우 sudo killall -9 apache2;로 실행중인 모든 프로세스를 종료 할 수 있습니다 . 그러나 후자의 경우 단순히 그들이 사라질 때까지 기다려야합니다. Apache가 멋지게 멈추기를 원하지 않는 경우 실제로하고 싶은 일은 진행중인 일을 조사하는 것입니다. 정확히 무슨 일이 일어나고 있는지 알아내는 것은 어려울 수 있습니다.

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

strace -p 1663

이것은 진행중인 프로세스의 라이브 출력을 제공하는 실행중인 프로세스 스택 추적에 첨부됩니다. 언제든지 당신은 Ctrl+C

추가 리소스는 Apache의 주요 오류 로그입니다.이 로그에서 찾을 수 있습니다 /var/log/apache2/error.log. 자세한 내용은 로그를 가져 와서 훑어보십시오. 문제가 진행중인 문제인 경우

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

이것은 strace실시간으로 실행됩니다. 마지막 N 라인이 교체 -f-#(가) 여기서, #50, 100, 282 등과 같은 양수


7

서비스를 중지 할 수있는 적절한 권한이 있는지 확인하십시오.

당신이 실행하는 경우 :

service apache2 stop

오류가 발생하지 않습니다.

* 웹 서버 apache2 중지

시험:

sudo service apache2 stop      

메모리가 부족하거나 스왑이 거의 찼을 때 실패합니다. killall이 유일한 해결책입니다
James Tan

3

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

sudo apache2ctl stop

서비스를 중지하고

sudo apache2ctl start

다시 시작합니다.

그것은 나를 위해 작동합니다, 가능한 제안은 환영합니다.



0

프로세스에 신호 를 보내서 중지 하도록 요청할 수 있습니다 . 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

kill -9회선 을 사용하여 Apache 프로세스를 종료하십시오 . 무언가 방해하지 않는 한 멈추어야합니다.


독자가 'kill'명령에 익숙하지 않으면 apache2 프로세스의 PID를 찾는 방법을 거의 알지 못할 것입니다.
Max Barraclough 2016 년

0

나는 같은 문제가 있었지만 하나의 service apache2 stop명령 만 수행 할 수는 없습니다 .PER 프로세스 하나를 수행해야 합니다. 그런 다음 sudo9 개의 프로세스가 실행 중이면 9 개의 프로세스를 수행해야하는 이상한 계정에 로그인 한 경우를 대비하여 앞에 추가 할 수 있습니다.sudo service apache2 stop

나를 위해 일했다.


-2

nginx를 설치 한 후 아파치가 제대로 작동하지 않았습니다. 어떤 경우에는 아파치가 nginx와 혼동되는 것 같습니다. 그냥 nginx를 제거

sudo apt-get purge nginx nginx-common
sudo apt-get autoremove
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.