Ich suche nach einer zuverlässigen Methode, um zu testen, ob postfixsie 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, resultbleibt 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 postfixes ausgeführt wird.
Meine Fragen sind also:
- Wie kann ich die Ausgabe
postfix statusaus einem Bash-Skript heraus abrufen? - Was mache ich da falsch? - Gibt es eine zuverlässigere Methode, um zu testen, ob
postfixein Bash-Skript ausgeführt wird?
2>&1aber das Ergebnis bleibt leer. Leider pgrepist dies keine Option, da es auf dem System nicht verfügbar ist (eine Synology-Plattenstation mit DSM 5.1).
ps aux | grep [p]ostfix?
psscheint zu funktionieren. Auf dem DSM-System werden pskeine anderen Parameter als akzeptiert w. Aber einfach anrufen ps | grep [p]ostfixfunktioniert.
statusAusgänge zustderr? Versuchen Sie2>&1,status-command hinzuzufügen . Auch können Sie verwendenpgrep postfix