Verwenden von Supervisord zur Steuerung des Postfix-MTA
3269
alephnull
Ich versuche Supervisord zur Kontrolle von Postfix zu verwenden. Die übliche Methode ist die Angabe eines Befehls, der den Daemon startet, den ich verwende postfix -c /etc/postfix start. Die Postfix-Manpage besagt, dass Sie startmit stopdem obigen Befehl das Ersetzen durch beenden möchten.
Ich sehe keine Möglichkeit, einen anderen Befehl zum Stoppen eines Daemons anzugeben, nur ein Signal. Die masterManpage sagt, dass das TERMSignal so funktioniert, als ob postfix abortes benutzt wurde, aber es ist still, wenn es ordnungsgemäß durch ein Signal heruntergefahren wird.
Auch die Start / Stopp-Methode des ersten Absatzes ist für den Supervisor schwierig. Das Skript führt eine Reihe von Prüfungen und ruft dann master, qmgrund pickupmit masterals Prozessgruppenleiter. Supervisord hat also ein Handle für eine nutzlose PID (eine, unter der das Skript ausgeführt wurde) und kann diese PID daher nicht verwenden, um den Dämon zu stoppen. Was es im Griff haben sollte, ist der masterProzess.
Es stellt sich heraus, dass es einfacher ist, Monit zu verwenden, um Daemons zu überwachen:
Monit ist ein kostenloses Open Source-Dienstprogramm zur Verwaltung und Überwachung von Prozessen, Programmen, Dateien, Verzeichnissen und Dateisystemen auf einem UNIX-System. Monit führt automatische Wartungs- und Reparaturarbeiten durch und kann in Fehlersituationen sinnvolle kausale Aktionen ausführen.
Mit Monit können Sie Daemon-Prozesse oder ähnliche Programme überwachen, die auf localhost ausgeführt werden. Monit ist besonders nützlich für die Überwachung von Daemon-Prozessen, z. B. beim Starten des Systems von /etc/init.d/. Zum Beispiel sendmail, sshd, apache und mysql.
1
Ivailo Bardarov
Das Gleiche wie @Hui Zheng, aber prüfen, ob Posfix lebt
trap "postfix stop" SIGINT trap "postfix stop" SIGTERM trap "postfix reload" SIGHUP # force new copy of hosts there (otherwise links could be outdated) cp /etc/hosts /var/spool/postfix/etc/hosts # start postfix postfix start # lets give postfix some time to start sleep 3 # wait until postfix is dead (triggered by trap) while kill -0 "`cat /var/spool/postfix/pid/master.pid`"; do sleep 5 done