Apache-Prozesse können nicht gestoppt werden

16

Update: Auf den Kommentar antworten:

Überprüfen Sie die Prozesse von 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

Ü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 laufen immer noch so viele Prozesse?

$ 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

Vielen Dank!

Tim
quelle
(Entschuldigung, ich kann keinen Kommentar abgeben, da ich nicht genug Repräsentanten habe.) 1. Ist der Webserver noch mit einem Webbrowser verfügbar? 2. Überprüfen Sie den Status Ihrer Prozesse. Möglicherweise wurden sie zu "Zombie-Prozessen" ps a | grep apache 3. Überprüfen Sie die Fehlerprotokolle, der möglicherweise nützliche Schwanz /var/log/apache/error.log
SamK
1. Ich benutze Firefox. Es ist mein Laptop. 2 und 3 siehe mein Update.
Tim
Haben Sie versucht, diese 'Apache2-K Stop' oder ein 'Apache2-K Neustart'? oder ein Neustart Ihres Systems?
Blade19899

Antworten:

27

Dies kann gelegentlich vorkommen, wenn sich Apache weigert, ordnungsgemäß zu stoppen, oder wenn Zombie-Prozesse ausgeführt werden . Bei ersteren können Sie alle laufenden Prozesse mit sudo killall -9 apache2beenden. Für letztere musst du einfach warten, bis sie verschwunden sind. Für den Fall, dass Apache nicht nett aufhören will, müssen Sie wirklich nachforschen, was los ist. Es kann jedoch schwierig sein, genau herauszufinden, was los ist.

Eine Interaktion straceder Prozess-ID kann einen Hinweis darauf geben, welche Sites aktiv sind und Probleme verursachen. Von oben ps -Akönnen Sie den ersten Vorgang mit überprüfen

strace -p 1663

Dies hängt mit dem Stack-Trace der laufenden Prozesse zusammen und liefert eine Live-Ausgabe der aktuellen Vorgänge. Sie können jederzeit Ctrl+C

Eine zusätzliche Ressource ist das Hauptfehlerprotokoll für Apache. Sie finden es in. /var/log/apache2/error.logSie möchten einen anständigen Teil des Protokolls abrufen und es für Details überfliegen. Wenn das Problem weiterhin besteht

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

Dies straceläuft ähnlich wie das in Echtzeit. Ersetzen Sie für die letzten N Zeilen -fmit, -#wo #eine positive Zahl wie 50, 100, 282 usw. ist.

Marco Ceppi
quelle
7

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

Wenn du läufst:

service apache2 stop

Sie erhalten keine Fehlermeldung, nur:

* Stoppen des Webservers apache2

Versuchen:

sudo service apache2 stop      
Jeremyforan
quelle
Wenn nicht genügend Speicher vorhanden ist oder der Swap fast voll ist, schlägt dies fehl. Killall ist die einzige Lösung
James Tan
2

Ich hatte auch das gleiche Problem und versuchte Folgendes:

sudo apache2ctl stop

den Dienst zu beenden, und

sudo apache2ctl start

um es erneut zu starten.

Es funktioniert bei mir, eventuelle Vorschläge sind willkommen.

Rudhin
quelle
1

Der Befehl systemctl stop apache2hat bei mir funktioniert.

IMTHATGUY P
quelle
0

Prozesse können aufgefordert werden (durch Senden eines Signals an sie), zu stoppen. Der killBefehl ist eine Möglichkeit, dies zu tun. Wenn Sie die Prozess-ID (PID) des Prozesses kennen, können Sie diese auf einfache Weise abfragen, indem Sie den folgenden Befehl in einem Terminal ausführen:

kill PID_OF_YOUR_PROCESS

Das obige Beispiel sendet der PID das Standard-TERM-Signal (Code 15). Sie können die Signalcodes in der Manpage von kill ( man kill) nachschlagen .

Wenn das Programm das an sie gesendete TERM-Signal ignoriert, kann durch Senden des KILL-Signals (Code 9) noch etwas mehr Druck ausgeübt werden. Dieses Signal wird als letzter Ausweg verwendet, da der Prozess möglicherweise keine nicht gespeicherten Daten speichert.

Wenn Sie a -SIGNAL_CODEals ersten Parameter vor der Prozess-ID angeben, sendet der Prozess das spezifische Signal. Eine weitere nützliche Funktion des killBefehls besteht darin, dass Sie wie im folgenden Beispiel weitere PIDs angeben können:

kill -9 PID1 PID2 PID3 PID4

Versuchen Sie, die Apache-Prozesse über die kill -9Leitung zu beenden . Sie sollten aufhören, es sei denn, etwas hindert sie daran.

Sean Kimball
quelle
Wenn der Leser mit dem Befehl 'kill' nicht vertraut ist, besteht kaum die Möglichkeit, dass er weiß, wie er die PID des Apache2-Prozesses findet.
Max Barraclough
0

Ich hatte das gleiche Problem, aber Sie können nicht nur einen service apache2 stopBefehl ausführen - Sie müssen einen PER- Prozess ausführen . Dann möchten Sie möglicherweise ein " sudoVorne" hinzufügen, nur für den Fall, dass Sie in einem ungeraden Konto angemeldet sind, das dies benötigt. Wenn 9 Prozesse ausgeführt werden, führen Sie 9 aussudo service apache2 stop

Hat super für mich funktioniert.

Peter
quelle
-2

Nach der Installation von Nginx funktionierte mein Apache nicht mehr richtig. Scheint in einigen Fällen Apache mit Nginx zu verwechseln. Nginx einfach entfernen

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