
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 strace
der Prozess-ID kann einen Hinweis darauf geben, welche Site(s) Probleme verursachen. Von oben aus ps -A
kö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.log
Sie 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 strace
in Echtzeit ausgeführt. Ersetzen Sie die letzten N Zeilen -f
durch -#
, 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 kill
Befehl 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_CODE
wird dem Prozess das entsprechende Signal gesendet. Eine weitere nützliche Funktion des kill
Befehls 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 -9
Zeile zu beenden. Sie sollten angehalten werden, sofern sie nicht durch etwas daran gehindert werden.