Ich suche nach einer zuverlässigen Methode, um zu testen, ob postfix
sie in einem Bash-Skript ausgeführt wird.
Mein erster Versuch war einfach zu versuchen pidof postfix
, was nicht funktioniert.
Dann habe ich versucht, die postfix status
:
POSTFIX_LOCATION=/var/packages/MailServer/target/sbin/postfix # location of postfix
result=`$POSTFIX_LOCATION status`
if [ -z $result ]; then
echo "Error: No status output from postfix"
elif [[ "$result" == *"is running"* ]]; then
echo "postfix is running!"
else echo "postfix is not running!"
fi
Obwohl der Status an die Konsole gemeldet wird, result
bleibt die Variable leer. Dies ist die Konsolenausgabe:
postfix/postfix-script: the Postfix mail system is running: PID: 11996
Error: No status output from postfix
Ich habe endlich einen Weg gefunden, um zu testen, ob Postfix ausgeführt wird, indem ich den Prozessnamen PID: 11996
"master" erhalten habe. Folgendes funktioniert also :
pidof master
Dies ist jedoch nicht sehr ausführlich und ich bin mir nicht sicher, ob dies eine zuverlässige Methode ist, um zu testen, ob postfix
es ausgeführt wird.
Meine Fragen sind also:
- Wie kann ich die Ausgabe
postfix status
aus einem Bash-Skript heraus abrufen? - Was mache ich da falsch? - Gibt es eine zuverlässigere Methode, um zu testen, ob
postfix
ein Bash-Skript ausgeführt wird?
status
Ausgänge zustderr
? Versuchen Sie2>&1
,status
-command hinzuzufügen . Auch können Sie verwendenpgrep postfix
2>&1
aber das Ergebnis bleibt leer. Leiderpgrep
ist dies keine Option, da es auf dem System nicht verfügbar ist (eine Synology-Plattenstation mit DSM 5.1).ps aux | grep [p]ostfix
?ps
scheint zu funktionieren. Auf dem DSM-System werdenps
keine anderen Parameter als akzeptiertw
. Aber einfach anrufenps | grep [p]ostfix
funktioniert.Antworten:
Debian oder Ubuntu
quelle
So überprüfen Sie, ob Postfix ausgeführt wird oder nicht:
So starten Sie den Postfix:
So stoppen Sie den Postfix:
quelle
postfix start
ohne Fehlermeldung tippen , aber wenn ich tippepostfix status
, heißt es "Das Postfix-Mailsystem läuft nicht". Ich nehme an, es scheitert stillschweigend.Ein zuverlässiger Weg, um zu testen, ob Postfix ausgeführt wird:
Eine Alternative, die im Wesentlichen dasselbe tut:
Argumentation
Nach weiteren Recherchen stellte sich heraus, dass das Testen auf überhaupt
ps | grep [p]ostfix
nicht zuverlässig ist, um zu überprüfen, ob Postfix ausgeführt wird.Es scheint der Grund zu sein, warum
/var/packages/MailServer/target/sbin/postfix status
nichts Nützliches ausgegeben wird, weilpostfix
die internepostlog
Binärdatei für die Ausgabe verwendet wird. Den entsprechenden Code finden Sie im Bash-Skript/var/packages/MailServer/target/libexec/postfix-script
:Das Überprüfen des Exit-Codes von
postfix status
funktioniert dagegen einwandfrei. Daspostfix-script
wird tatsächlich von derpostfix
Binärdatei hinter den Kulissen aufgerufen und kann nicht direkt aufgerufen werden. Glücklicherweise enthält das Skript auch den Code zum Testen, ob ausgeführtpostfix
wird:Die Variable
$daemon_directory
wird von der aufrufendenpostfix
Binärdatei gesetzt. Auf meinem System wird es aufgelöst/var/packages/MailServer/target/libexec/
.quelle
After doing some more research
Könnten Sie Ihre Behauptungen durch Beweise unterstützen?