Marc Reichelt: apachectl - wie Server auf leichte Weise neustarten?

Beitrag lesen

Hallo an alle,

nicht wenigen hier dürfte das Skript apachectl bzw. apache2ctl bekannt vorkommen.

Mit dem Aufruf "apache2ctl graceful" kann ich den Server auf "leichte" Art und Weise neustarten, sprich: Alle offenen Verbindungen werden bis zu ihrem Ende laufen gelassen und allmählich werden alle nicht-root Server-Instanzen gestoppt und durch neue Instanzen ersetzt - anders als bei "apache2ctl restart".

Das funktioniert perfekt, und wird es auch weiterhin.

Mein Problem ist nun: Für ein selbstgeschriebenes logrotate-Skript muss ich den Server neustarten, was ich am Besten über "apache2ctl graceful" machen möchte, da der Server so nach außen hin auch für die (kurze) Zeit des Neustarts verfügbar bleibt und bestehende Verbindungen nicht abgebrochen werden.
Aber: Die erfolgreiche Ausführung des Neustarts kann nicht direkt abgefragt werden (da die Instanzen des Apache erst nach und nach durch neue ersetzt werden).

Daher muss ich im logrotate-Skript nach dem Signal zum Neustarten des Servers eine Wartezeit einbauen (derzeit sind es 300 Sekunden).
Aber die Unsicherheit, dass Apache noch nicht komplett neu gestartet ist, bleibt.
Welche Möglichkeit gibt es, in einem Shell-Skript zu ermitteln, ob alle notwendigen Apache-Instanzen *wirklich* komplett neu gestartet sind? Diese Überprüfung könnte ich dann beispielsweise alle N Sekunden ausführen, um dann (bei erfolgreichem Neustart) weitere Aktionen durchzuführen.

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
DPRINTK("Last time you were disconnected, how about now?");
        linux-2.6.6/drivers/net/tokenring/ibmtr.c
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)