Não é possível parar os processos do apache

13

Atualização: Respondendo ao comentário:

verificar processos do 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

verificando o log de erros do apache

$ 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: parei o apache, mas por que ele ainda tem o mesmo número de processos em execução?

$ 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

Obrigado!

    
por Tim 08.08.2011 / 15:22

7 respostas

23

Isso pode acontecer ocasionalmente quando o Apache se recusa a parar bem ou tem Processos Zombie . Para o primeiro, você pode matar todos os processos em execução com sudo killall -9 apache2 ; no entanto, para este último, você precisará esperar que eles desapareçam. Caso o Apache não queira parar muito bem, o que você realmente quer fazer é investigar o que está acontecendo. Descobrir exatamente o que está acontecendo pode ser difícil.

Um strace interativo do ID do processo pode indicar quais sites estão agindo e causando problemas. A partir do seu ps -A acima, você pode verificar o primeiro processo com

strace -p 1663

Isso será anexado ao rastreamento de pilha de processos em execução, fornecendo saída ao vivo do que está acontecendo. A qualquer momento você pode Ctrl + C

Um recurso adicional é o principal registro de erros para o Apache. Isso pode ser encontrado em /var/log/apache2/error.log . Você vai querer obter um pedaço decente do log e procurá-lo para mais detalhes. Se o problema for um problema contínuo em execução

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

Isso é semelhante ao strace e será executado em tempo real. Para as últimas N linhas, substitua -f por -# , em que # é um número positivo como 50, 100, 282, etc.

    
por Marco Ceppi 08.08.2011 / 16:12
6

Verifique se você possui as permissões adequadas para interromper o serviço.

Se você executar:

service apache2 stop

você não receberá nenhum erro apenas:

  

* Parando o servidor da web apache2

Tente:

sudo service apache2 stop      
    
por jeremyforan 18.09.2014 / 18:00
2

Eu também tive o mesmo problema e tentei o seguinte:

sudo apache2ctl stop

para parar o serviço e

sudo apache2ctl start

para começar de novo.

Funciona para mim, quaisquer sugestões possíveis são bem-vindas.

    
por Rudhin 17.02.2014 / 12:31
1

O comando systemctl stop apache2 funcionou para mim.

    
por IMTHATGUY P 08.02.2018 / 06:38
0

Os processos podem ser solicitados (enviando um sinal para eles) para parar. O comando kill é uma maneira de fazer isso. Se você conhece o ID do processo (PID) do processo, ele pode ser perguntado muito bem, executando o comando abaixo em um terminal:

kill PID_OF_YOUR_PROCESS

O exemplo acima envia o PID como o sinal TERM padrão (código 15). Você pode procurar os códigos de sinal na página man do kill ( man kill ) .

Quando o programa desconsidera o sinal TERM enviado a eles, ainda é possível aplicar um pouco mais de pressão enviando o sinal KILL (código 9). Este sinal é usado como último recurso, porque o processo pode não salvar nenhum dado não salvo.

Especificar um -SIGNAL_CODE como o primeiro parâmetro antes que o ID do processo envie o processo ao sinal específico. Outro recurso útil do comando kill é que você pode especificar mais PIDs como no exemplo a seguir:

kill -9 PID1 PID2 PID3 PID4

Tente finalizar os processos do Apache usando a linha kill -9 . Eles devem parar a menos que algo os impeça de fazê-lo.

    
por Sean Kimball 08.08.2011 / 15:44
0

Eu tive o mesmo problema, mas você não pode simplesmente fazer um comando service apache2 stop - você tem que fazer um processo PER . Então, você pode querer adicionar um sudo na frente apenas no caso de você estar logado em alguma conta estranha que precisa dele, então se você ver 9 processos em execução, faça 9 sudo service apache2 stop

Funcionou muito bem para mim.

    
por Peter 01.04.2015 / 20:21
-2

Depois de instalar o nginx, meu apache parou de funcionar corretamente. Parece em alguns casos apache confuso com nginx. Apenas remova o nginx

sudo apt-get purge nginx nginx-common
sudo apt-get autoremove
    
por Manvel 01.02.2016 / 13:25