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?
2>&1
aber das Ergebnis bleibt leer. Leider pgrep
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 werden ps
keine anderen Parameter als akzeptiert w
. Aber einfach anrufen ps | grep [p]ostfix
funktioniert.
status
Ausgänge zustderr
? Versuchen Sie2>&1
,status
-command hinzuzufügen . Auch können Sie verwendenpgrep postfix