Sto cercando un modo affidabile per verificare se postfixè in esecuzione all'interno di uno script bash.
Il mio primo tentativo è stato semplicemente provare pidof postfix, che non funziona.
Quindi ho cercato di ottenere il 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
Ma anche se lo stato viene segnalato alla console, la resultvariabile rimane vuota. Questo è l'output della console:
postfix/postfix-script: the Postfix mail system is running: PID: 11996
Error: No status output from postfix
Ho finalmente trovato un modo per verificare se Postfix è in esecuzione ottenendo il nome del processo di PID: 11996, che è "master". Così il seguente fa il lavoro:
pidof master
Ma questo non è molto dettagliato e non sono sicuro se questo è un modo affidabile per testare se postfixè in esecuzione.
Quindi le mie domande sono:
- Come posso ottenere l'output di
postfix statusall'interno di uno script bash? - Qualcosa che sto facendo di sbagliato lì? - C'è una migliore affidabile modo per verificare se
postfixè in esecuzione dall'interno di uno script bash?
2>&1ma il risultato rimane vuoto. Purtroppo pgrepnon è un'opzione perché non è disponibile sul sistema (una stazione disco Synology con DSM 5.1).
ps aux | grep [p]ostfix?
pssembra funzionare. Sul sistema DSM psnon accetta alcun parametro diverso da allora w. Ma semplicemente chiamare ps | grep [p]ostfixfunziona.
statususcite perstderr? Prova ad aggiungere2>&1astatus-command. Inoltre puoi usarepgrep postfix