아파치 프로세스를 중지 할 수 없습니다 : 아파치를 멈췄지만 왜 여전히 같은

업데이트 : 의견에 응답 :

아파치 프로세스 확인 :

$ 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

감사!



답변

아파치가 잘 멈추지 않거나 좀비 프로세스 가있을 때 이런 일이 가끔 일어날 수있다 . 전자의 경우 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 등과 같은 양수


답변

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

당신이 실행하는 경우 :

service apache2 stop

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

* 웹 서버 apache2 중지

시험:

sudo service apache2 stop

답변

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

sudo apache2ctl stop

서비스를 중지하고

sudo apache2ctl start

다시 시작합니다.

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


답변

명령 systemctl stop apache2이 나를 위해 일했습니다.


답변

프로세스에 신호 를 보내서 중지 하도록 요청할 수 있습니다 . 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 프로세스를 종료하십시오 . 무언가 방해하지 않는 한 멈추어야합니다.


답변

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

나를 위해 일했다.


답변

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

sudo apt-get purge nginx nginx-common
sudo apt-get autoremove