Was kann dazu führen, dass httpd nach dem Stoppen automatisch gestartet wird?
In einem Bash-Skript muss ich zuerst den Apache-Webserver stoppen. Dies ist das Skript:
apachectl stop;
while pgrep httpd; do sleep 1; done
echo "[Apache server stopped]"
Wenn ich das Skript ausführe, druckt es laufende Apache-Prozesse, bis kein laufender Prozess mehr vorhanden ist, und druckt [Apache-Server gestoppt]
pgrep httpd
Wenn Sie dann den Befehl ausführen, wird nichts gedruckt. Wenn ich jedoch eine vom Server gehostete Website betrete, werden pgrep httpd
einige httpd-Prozesse gedruckt.
Ist dies der richtige Weg, um Apache zu stoppen? Warum startet es nach dem Ausführen automatisch apachectl stop
? Wie kann ich die laufenden untergeordneten Prozesse stoppen, wenn sie mit KeepAliveTime zusammenhängen ?
Bearbeiten: Dies gilt auch für die Ausführung service httpd stop
oder apachectl stop
Befehle in der Befehlszeile.
quelle
/usr/bin/systemctl
Bitte überprüfen Sie, ob es vorhanden ist . Wenn dies ein System ist, weiß ich genau, was los ist./usr/bin/systemctl
existiert nicht.service [TAB]
ListeAntworten:
upstart
, der Service Manager, kann httpd neu starten, wenn es auf eingestellt istrespawn
.apachectl stop
Stopp ist der Prozess ohne Benachrichtigungupstart
Versuchen:
Übrigens, wenn Sie einen der
stop
gleichen Befehle an Apache ausgeben, werden keine neuen Verbindungen mehr akzeptiert. Dasgracefuls
wird zusätzlich ermöglichen es alle aktuell geöffneten Verbindungen zu vervollständigen.quelle
init --help | tail -1
init --help
zeigt, dass es verwendetupstart
! aberstop httpd
gibt diesen Fehler zurück:stop: Unknown job: httpd
Service bestätigen
Unter CentOS 6 würde ich untersuchen, ob der
httpd
Dienst verfügbar ist.Sie können diesen Dienst deaktivieren, indem Sie
chkconfig
:Aber es fängt immer wieder an, wenn ich darauf zugreife?
Da Sie mit CentOS 6 arbeiten, verwenden Sie wahrscheinlich Upstart. Sie können sehen, ob
httpd
der Dienst unter seiner Kontrolle steht.Sie werden es in der Liste sehen, ich habe diese Konfiguration nicht zu zeigen. Ich würde basierend auf Ihrer Beschreibung des Problems annehmen, dass Ihr System Folgendes
httpd
eingestellt hat:Was nach meinem Verständnis bedeutet, dass Upstart, wenn es sieht, dass auf diesen Dienst zugegriffen wird, ihn erneut startet. Upstart verwaltet in diesem Fall ein Service-Skript für
httpd
unter/etc/init
. Sie sollten in diese Datei gehen und den Dienst deaktivieren und die Konfiguration neu laden. Es hat wahrscheinlich einenrespawn
Abschnitt, der dies verursacht:Beispiel
Verweise
quelle
Suchen Sie danach
/etc/inittab
, könnte sein, dass jemand es zum Respawn gebracht hat.quelle
id:3:initdefault: