Saya mencari cara yang dapat diandalkan untuk menguji apakah postfix
berjalan 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, result
variabel 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 postfix
sedang berjalan.
Jadi pertanyaan saya adalah:
- Bagaimana saya bisa mendapatkan output
postfix status
dari dalam skrip bash? - Ada yang salah dengan saya? - Apakah ada cara yang lebih andal untuk menguji apakah
postfix
dijalankan dari dalam skrip bash?
status
keluaran untukstderr
? Coba tambahkan2>&1
ke-status
perintah. Anda juga dapat menggunakanpgrep postfix
2>&1
tetapi hasilnya tetap kosong. Sayangnyapgrep
tidak ada pilihan karena tidak tersedia pada sistem (stasiun disk Synology dengan DSM 5.1).ps aux | grep [p]ostfix
?ps
tampaknya berfungsi. Pada sistem DSMps
tidak menerima parameter apa pun selain ituw
. Tetapi hanya dengan meneleponps | grep [p]ostfix
itu berhasil.Jawaban:
Debian atau Ubuntu
sumber
Untuk memeriksa apakah Postfix berjalan atau tidak:
Untuk memulai Postfix:
Untuk menghentikan postfix:
sumber
postfix start
tanpa pesan kesalahan, tetapi ketika saya mengetikpostfix status
dikatakan "sistem surat Postfix tidak berjalan." Saya kira itu gagal diam-diam.Cara yang andal untuk menguji apakah postfix berjalan:
Alternatif yang pada dasarnya melakukan hal yang sama:
Pemikiran
Setelah melakukan penelitian lebih lanjut, ternyata pengujian untuk
ps | grep [p]ostfix
tidak dapat diandalkan sama sekali untuk memverifikasi apakah postfix berjalan.Tampaknya alasan mengapa
/var/packages/MailServer/target/sbin/postfix status
tidak menghasilkan sesuatu yang bermanfaat adalah, karenapostfix
menggunakanpostlog
biner internal untuk keluaran. Kode yang relevan dapat ditemukan di skrip bash/var/packages/MailServer/target/libexec/postfix-script
:Memeriksa untuk kode keluar dari
postfix status
tidak bekerja dengan baik di sisi lain. Thepostfix-script
sebenarnya disebut di balik layar denganpostfix
biner dan tidak bisa disebut secara langsung. Tapi untungnya skrip juga menyertakan kode untuk menguji apakahpostfix
sedang berjalan:Variabel
$daemon_directory
diatur olehpostfix
biner panggilan . Di sistem saya itu memutuskan untuk/var/packages/MailServer/target/libexec/
.sumber
After doing some more research
Bisakah Anda mendukung klaim Anda dengan memberikan bukti?