Impossible d'arrêter les processus Apache

16

Mise à jour: Répondre au commentaire:

vérifier les processus d'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

vérification du journal des erreurs 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: j'ai arrêté Apache, mais pourquoi il a toujours le même nombre de processus en cours d'exécution?

$ 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

Merci!

StackExchange pour tous
la source
(Désolé, je ne peux pas commenter car je n'ai pas assez de représentants.) 1. Le serveur Web est-il toujours disponible avec un navigateur Web? 2. Vérifiez l'état de vos processus. Ils sont peut-être devenus des «processus zombies» ps a | grep apache 3. Vérifiez les journaux d'erreurs, la queue peut être utile /var/log/apache/error.log
SamK
1. J'utilise Firefox. C'est mon ordinateur portable. 2 et 3 voir ma mise à jour.
StackExchange for All du
Avez-vous essayé cet 'apache2 -k stop' ou un 'apache2 -k restart'? ou un redémarrage de votre système?
blade19899

Réponses:

27

Cela peut se produire occasionnellement quand Apache refuse de s'arrêter correctement ou a des processus zombies . Pour les premiers, vous pouvez tuer tous les processus en cours d'exécution avec sudo killall -9 apache2; cependant, pour ces derniers, vous devrez simplement attendre qu'ils s'en aillent. Dans le cas où Apache ne voudrait pas s'arrêter correctement, ce que vous voudrez vraiment faire, c'est enquêter sur ce qui se passe. Il peut cependant être difficile de savoir exactement ce qui se passe.

Un straceidentifiant interactif du processus peut donner un indice sur les sites qui agissent et provoquent des problèmes. De ce qui précède, ps -Avous pouvez vérifier le premier processus avec

strace -p 1663

Cela sera attaché à la trace de la pile des processus en cours d'exécution, fournissant une sortie en direct de ce qui se passe. À tout moment, vous pouvez Ctrl+C

Une ressource supplémentaire est le journal des erreurs principal pour Apache. Vous pouvez le trouver dans /var/log/apache2/error.logVous voudrez obtenir un morceau décent du journal et le parcourir pour plus de détails. Si le problème est un problème en cours d'exécution

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

Cette opération similaire à straces'exécutera en temps réel. Pour les dernières N lignes, remplacez -fpar -##est un nombre positif comme 50, 100, 282, etc.

Marco Ceppi
la source
7

Assurez-vous que vous disposez des autorisations appropriées pour arrêter le service.

Si vous exécutez:

service apache2 stop

vous n'obtiendrez aucune erreur simplement:

* Arrêt du serveur web apache2

Essayer:

sudo service apache2 stop      
jeremyforan
la source
quand il n'y a pas assez de mémoire ou d'échange presque plein, cela échouera, killall est la seule solution
James Tan
3

Moi aussi, j'ai eu le même problème et j'ai essayé ce qui suit:

sudo apache2ctl stop

pour arrêter le service, et

sudo apache2ctl start

pour le recommencer.

Cela fonctionne pour moi, toutes les suggestions possibles sont les bienvenues.

Rudhin
la source
1

La commande a systemctl stop apache2fonctionné pour moi.

IMTHATGUY P
la source
0

On peut demander aux processus (en leur envoyant un signal ) de s'arrêter. La killcommande est un moyen de le faire. Si vous connaissez l'ID de processus (PID) du processus, vous pouvez le demander en exécutant la commande ci-dessous dans un terminal:

kill PID_OF_YOUR_PROCESS

L'exemple ci-dessus envoie au PID le signal TERM par défaut (code 15). Vous pouvez rechercher les codes de signal dans la page de manuel de kill ( man kill).

Lorsque le programme ne tient pas compte du signal TERM qui leur est envoyé, il est toujours possible d'appliquer un peu plus de pression en envoyant le signal KILL (code 9). Ce signal est utilisé en dernier recours, car le processus peut ne pas enregistrer de données non enregistrées.

La spécification de a -SIGNAL_CODEcomme premier paramètre avant l'ID de processus enverra au processus le signal spécifique. Une autre fonctionnalité utile de la killcommande est que vous pouvez spécifier plus de PID comme dans l'exemple suivant:

kill -9 PID1 PID2 PID3 PID4

Essayez de terminer les processus Apache en utilisant la kill -9ligne. Ils devraient s'arrêter à moins que quelque chose ne les empêche de le faire.

Sean Kimball
la source
Si le lecteur n'est pas familier avec la commande 'kill', il n'y a presque aucune chance qu'il sache comment trouver le PID du processus apache2.
Max Barraclough
0

J'ai eu le même problème mais vous ne pouvez pas faire une seule service apache2 stopcommande - vous devez faire un processus PER . Ensuite, vous POUVEZ vouloir ajouter un sudodevant juste au cas où vous êtes connecté à un compte impair qui en a besoin, donc si vous voyez 9 processus en cours d'exécution, faites 9sudo service apache2 stop

A très bien fonctionné pour moi.

Peter
la source
-2

Après avoir installé nginx, mon apache a cessé de fonctionner correctement. Semble dans certains cas apache confondre avec nginx. Il suffit de supprimer nginx

sudo apt-get purge nginx nginx-common
sudo apt-get autoremove
Manvel
la source