Stoppen Sie Apache mit Würde

23

Gibt es eine Möglichkeit, den Apache-Server anzuhalten, ohne die Ausführung von Anforderungen zu beenden, im Grunde eine Möglichkeit, dies mitzuteilen - keine weiteren Verbindungen mehr zu akzeptieren und die Verbindung zu beenden, wenn Sie Ihre aktuellen beenden?

php_nub_qq
quelle

Antworten:

12

Verwenden Sie apachectl -k graceful-stopvon hier :

Das Signal WINCH oder Graceful Stop veranlasst den übergeordneten Prozess, die Kinder anzuweisen, nach ihrer aktuellen Anforderung zu beenden (oder sofort zu beenden, wenn sie nichts bedienen). Das übergeordnete Element entfernt dann seine PidFile und hört auf, alle Ports abzuhören. Das übergeordnete Element wird weiterhin ausgeführt und überwacht untergeordnete Elemente, die Anforderungen verarbeiten. Sobald alle untergeordneten Elemente abgeschlossen und beendet wurden oder das von GracefulShutdownTimeout festgelegte Zeitlimit erreicht wurde, wird auch das übergeordnete Element beendet.

B. Miller
quelle
1

Denken Sie daran, dass sys-v init standardmäßig ordnungsgemäß gestoppt hat und Force-Stop als zusätzliche Option verwendet wurde. Eine spezielle Option zum ordnungsgemäßen Anhalten ist nur erforderlich, wenn Sie einen benutzerdefinierten Prozessmanager ausführen, der normalerweise Prozesse abbricht.

John Keates
quelle
Diese Antwort könnte den Eindruck erwecken, dass systemdder Prozess nicht beendet wird , da es sich nicht um einen benutzerdefinierten Prozessmanager handelt. Standardmäßig führt systemd jedoch auch ein stopnot a graceful-stopfor apache aus.
B. Miller
4
@ B.Miller Wenn Ihr Systemd einen Stopp anstelle eines ordnungsgemäßen Stopps ausführt, ist dies ein betriebssystemspezifischer Fehler, der protokolliert werden muss. Arch Linux und CentOS 7 führen beide elegante Stopps durch.
Harald
Debian macht auch einen würdevollen Stopp
John Keates
2
Interessante @ JohnKeates ... vielleicht ist dies Ubuntu 18.04 spezifisch. 18.04 verwendet den Stop-Befehl/usr/sbin/apachectl stop
B. Miller