Não é possível parar os processos apache

16

Atualização: Respondendo ao comentário:

verifique os 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!

StackExchange for All
fonte
(Desculpe, não posso comentar porque não tenho representantes suficientes.) 1. O servidor da web ainda está disponível em um navegador da web? 2. Verifique o status dos seus processos. Eles podem ter se tornado "processos zumbis" ps a | grep apache 3. Verifique os logs de erros, pode ser útil tail /var/log/apache/error.log
SamK
1. Estou usando o Firefox. É o meu laptop. 2 e 3 ver minha atualização.
StackExchange for All
Você já tentou este 'apache2 -k stop' ou um 'apache2 -k restart'? ou uma reinicialização do seu sistema?
precisa saber é o seguinte

Respostas:

27

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

Um interativo stracedo ID do processo pode fornecer uma pista sobre quais sites estão agindo e causando problemas. A partir do exposto, ps -Avocê pode verificar o primeiro processo com

strace -p 1663

Isso será anexado ao rastreamento de pilha dos 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 log de erros do Apache, que pode ser encontrado em /var/log/apache2/error.logVocê deseja obter uma parte decente do log e examiná-lo para obter detalhes. Se o problema for um problema contínuo em execução

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

Este semelhante ao straceserá executado em tempo real. Para as últimas N linhas, substitua -fpor -#onde #é um número positivo como 50, 100, 282, etc.

Marco Ceppi
fonte
7

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

Se você executar:

service apache2 stop

você não receberá nenhum erro apenas:

* Parando o servidor web apache2

Experimentar:

sudo service apache2 stop      
jeremyforan
fonte
quando não há memória ou troca quase cheio o suficiente, este irá falhar, killall é a única solução
James Tan
3

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

sudo apache2ctl stop

parar o serviço e

sudo apache2ctl start

para iniciá-lo novamente.

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

Rudhin
fonte
1

O comando systemctl stop apache2funcionou para mim.

IMTHATGUY P
fonte
0

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

kill PID_OF_YOUR_PROCESS

O exemplo acima envia ao PID o sinal TERM padrão (código 15). Você pode procurar os códigos de sinal na página de manual 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 dados não salvos.

Especificar a -SIGNAL_CODEcomo o primeiro parâmetro antes do ID do processo enviará ao processo o sinal específico. Outro recurso útil do killcomando é 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 kill -9linha Eles devem parar, a menos que algo os impeça de fazê-lo.

Sean Kimball
fonte
Se o leitor não estiver familiarizado com o comando 'kill', quase não há chance de saber como encontrar o PID do processo apache2.
precisa
0

Eu tive o mesmo problema, mas você não pode apenas executar um service apache2 stopcomando - você precisa executar um processo PER . Então, você PODE querer adicionar um sudona frente apenas no caso de estar conectado a uma conta estranha que precisa, portanto, se você vir 9 processos em execução, faça 9sudo service apache2 stop

Funcionou muito bem para mim.

Pedro
fonte
-2

Depois de instalar o nginx, meu apache parou de funcionar corretamente. Em alguns casos, parece apache confuso com nginx. Basta remover nginx

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