frankx: apachectl - wie Server auf leichte Weise neustarten?

Beitrag lesen

Hellihello Marcel,

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).

Leider habe ich darüber auch nur ein bissel gelesen. Ich hätte jetzt gedacht, dass der Apache als ein Prozess läuft und dieser Parent-Prozess eine ProzessID hätte und dieser Parentprozess erst dann gekillt wird, wenn alle laufenden (geforkten?) Prozesse beendet sind. Wäre dem so, könntest Du ja mittels einer while(1)-Schleife abfragen, ob Apache (bzw. der Prozess httpd) noch mit der alten PID läuft.

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.

Dank und Gruß,

frankx

--
tryin to multitain  - Globus = Planet != Welt