Saya mencari cara yang dapat diandalkan untuk menguji apakah postfixberjalan dari dalam skrip bash.
Upaya pertama saya hanyalah mencoba pidof postfix, yang tidak berhasil.
Kemudian saya mencoba untuk mendapatkan 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
Tetapi meskipun statusnya dilaporkan ke konsol, resultvariabel tetap kosong. Ini adalah output konsol:
postfix/postfix-script: the Postfix mail system is running: PID: 11996
Error: No status output from postfix
Saya akhirnya menemukan cara untuk menguji apakah postfix berjalan dengan mendapatkan nama proses PID: 11996, yaitu "master". Jadi yang berikut ini berfungsi:
pidof master
Tapi ini tidak terlalu verbose dan saya tidak yakin apakah ini cara yang dapat diandalkan untuk menguji apakah postfixsedang berjalan.
Jadi pertanyaan saya adalah:
- Bagaimana saya bisa mendapatkan output
postfix statusdari dalam skrip bash? - Ada yang salah dengan saya? - Apakah ada cara yang lebih andal untuk menguji apakah
postfixdijalankan dari dalam skrip bash?
2>&1tetapi hasilnya tetap kosong. Sayangnya pgreptidak ada pilihan karena tidak tersedia pada sistem (stasiun disk Synology dengan DSM 5.1).
ps aux | grep [p]ostfix?
pstampaknya berfungsi. Pada sistem DSM pstidak menerima parameter apa pun selain itu w. Tetapi hanya dengan menelepon ps | grep [p]ostfixitu berhasil.
statuskeluaran untukstderr? Coba tambahkan2>&1ke-statusperintah. Anda juga dapat menggunakanpgrep postfix