Der Apache-Server wird nach dem Beenden des Dienstes automatisch gestartet

7

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 httpdWenn Sie dann den Befehl ausführen, wird nichts gedruckt. Wenn ich jedoch eine vom Server gehostete Website betrete, werden pgrep httpdeinige 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 stopoder apachectl stopBefehle in der Befehlszeile.

Omid
quelle
2
Wahrscheinlich wird ein Dienstmonitor ausgeführt, auf dem nur der Dienst beendet wird und versucht wird, den Betrieb fortzusetzen.
Bratchley
Nur um etwas zu überprüfen: /usr/bin/systemctlBitte überprüfen Sie, ob es vorhanden ist . Wenn dies ein System ist, weiß ich genau, was los ist.
strugee
Inetd Service?
Kiwy
@strugee /usr/bin/systemctlexistiert nicht.
Omid
@ Kiwy inetd ist nicht in der service [TAB]Liste
Omid

Antworten:

2

upstart, der Service Manager, kann httpd neu starten, wenn es auf eingestellt ist respawn.

apachectl stop Stopp ist der Prozess ohne Benachrichtigung upstart

Versuchen:

service httpd stop

Übrigens, wenn Sie einen der stopgleichen Befehle an Apache ausgeben, werden keine neuen Verbindungen mehr akzeptiert. Das gracefulswird zusätzlich ermöglichen es alle aktuell geöffneten Verbindungen zu vervollständigen.

Matt
quelle
1
OP hat "CentOS" markiert, aber ich stimme zu, dass wahrscheinlich etwas Ähnliches passiert. Möglicherweise wird eine Art Dienstmonitor ausgeführt.
Bratchley
Was meinst du mit dem Centos-Tag?
Matt
@mtm Danke, aber wie JoelDavis erwähnte, benutze ich CentOS nicht Ubuntu
Omid
@Omid Centos6? init --help | tail -1
Matt
Ja. Centos6. init --helpzeigt, dass es verwendet upstart! aber stop httpdgibt diesen Fehler zurück:stop: Unknown job: httpd
Omid
2

Service bestätigen

Unter CentOS 6 würde ich untersuchen, ob der httpdDienst verfügbar ist.

$ service --status-all |& grep httpd
httpd is stopped

Sie können diesen Dienst deaktivieren, indem Sie chkconfig:

$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:off   3:on    4:on    5:on    6:off

$ sudo chkconfig httpd off

$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off

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 httpdder Dienst unter seiner Kontrolle steht.

$ initctl list

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 httpdeingestellt hat:

httpd stop/waiting

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 httpdunter /etc/init. Sie sollten in diese Datei gehen und den Dienst deaktivieren und die Konfiguration neu laden. Es hat wahrscheinlich einen respawnAbschnitt, der dies verursacht:

Beispiel

$ more /etc/init/prefdm.conf 
# prefdm - preferred display manager
#
# Starts gdm/xdm/etc by preference

start on stopped rc RUNLEVEL=5

stop on starting rc RUNLEVEL=[!5]

console output
respawn
respawn limit 10 120
exec /etc/X11/prefdm -nodaemon

Verweise

slm
quelle
0

Suchen Sie danach /etc/inittab, könnte sein, dass jemand es zum Respawn gebracht hat.

periket2000
quelle
Inhalt der Datei ist:id:3:initdefault:
Omid
Daher ist das nicht das Problem.
Periket2000