Apache-Prozesse können nicht gestoppt werden

Apache-Prozesse können nicht gestoppt werden

Aktualisieren:Als Antwort auf den Kommentar:

Prozesse von Apache prüfen:

$ 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

Überprüfen des Apache-Fehlerprotokolls

$ 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:Ich habe Apache gestoppt, aber warum werden immer noch gleich viele Prozesse ausgeführt?

$ 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

Danke!

Antwort1

Dies kann gelegentlich passieren, wenn Apache sich weigert, ordnungsgemäß anzuhalten oderZombie-Prozesse. Im ersten Fall können Sie alle laufenden Prozesse mit beenden sudo killall -9 apache2; im zweiten Fall müssen Sie jedoch einfach warten, bis sie beendet sind. Falls Apache nicht ordnungsgemäß beendet werden möchte, sollten Sie untersuchen, was los ist. Genau herauszufinden, was los ist, kann jedoch schwierig sein.

Eine interaktive Darstellung straceder Prozess-ID kann einen Hinweis darauf geben, welche Site(s) Probleme verursachen. Von oben aus ps -Akönnen Sie den ersten Prozess überprüfen mit

strace -p 1663

Dies wird an den Stacktrace des laufenden Prozesses angehängt und liefert eine Live-Ausgabe der laufenden Vorgänge. Sie können jederzeit Ctrl+C

Eine weitere Ressource ist das Hauptfehlerprotokoll für Apache, das Sie unter finden. /var/log/apache2/error.logSie sollten sich einen großen Teil des Protokolls besorgen und ihn nach Details durchsuchen. Wenn das Problem ein andauerndes Problem ist, das ausgeführt wird

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

Dies wird ähnlich wie stracein Echtzeit ausgeführt. Ersetzen Sie die letzten N Zeilen -fdurch -#, wobei #eine positive Zahl wie 50, 100, 282 usw. ist.

Antwort2

Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen zum Beenden des Dienstes verfügen.

Wenn du läufst:

service apache2 stop

Sie erhalten keinen Fehler, sondern nur:

* Stoppen des Webservers Apache2

Versuchen:

sudo service apache2 stop      

Antwort3

Ich hatte auch das gleiche Problem und habe Folgendes versucht:

sudo apache2ctl stop

den Dienst zu beenden und

sudo apache2ctl start

um es erneut zu starten.

Bei mir funktioniert es, alle möglichen Vorschläge sind willkommen.

Antwort4

Prozesse können angefragt werden (durch Senden einerSignalzu ihnen), um sie zu stoppen. Der killBefehl ist eine Möglichkeit, dies zu tun. Wenn Sie die Prozess-ID (PID) des Prozesses kennen, können Sie sie ganz einfach abfragen, indem Sie den folgenden Befehl in einem Terminal ausführen:

kill PID_OF_YOUR_PROCESS

Das obige Beispiel sendet dem PID das Standard-TERM-Signal (Code 15). Sie können die Signalcodes imManpage von Kill( man kill).

Wenn das Programm das an sie gesendete TERM-Signal ignoriert, ist es immer noch möglich, etwas mehr Druck auszuüben, indem man das KILL-Signal (Code 9) sendet. Dieses Signal wird als letztes Mittel verwendet, da der Prozess möglicherweise keine nicht gespeicherten Daten speichert.

Wenn Sie als ersten Parameter vor der Prozess-ID ein angeben, -SIGNAL_CODEwird dem Prozess das entsprechende Signal gesendet. Eine weitere nützliche Funktion des killBefehls ist, dass Sie mehrere PIDs angeben können, wie im folgenden Beispiel:

kill -9 PID1 PID2 PID3 PID4

Versuchen Sie, die Apache-Prozesse mithilfe dieser kill -9Zeile zu beenden. Sie sollten angehalten werden, sofern sie nicht durch etwas daran gehindert werden.

verwandte Informationen