Tôi đang tìm kiếm một cách đáng tin cậy để kiểm tra nếu postfixđang chạy từ bên trong tập lệnh bash.
Nỗ lực đầu tiên của tôi chỉ đơn giản là cố gắng pidof postfix, mà không hiệu quả.
Sau đó, tôi đã cố gắng để có được 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
Nhưng ngay cả khi trạng thái được báo cáo cho bàn điều khiển, resultbiến vẫn trống. Đây là đầu ra giao diện điều khiển:
postfix/postfix-script: the Postfix mail system is running: PID: 11996
Error: No status output from postfix
Cuối cùng tôi đã tìm thấy một cách để kiểm tra xem postfix có đang chạy hay không bằng cách lấy tên tiến trình của nó PID: 11996, đó là "master". Vì vậy, sau đây không hoạt động:
pidof master
Nhưng điều này không quá dài dòng và tôi không chắc đây có phải là cách đáng tin cậy để kiểm tra nếu postfixđang chạy hay không.
Vì vậy, câu hỏi của tôi là:
- Làm thế nào tôi có thể nhận được đầu ra
postfix statustừ bên trong một tập lệnh bash? - Có gì tôi đang làm sai ở đó không? - Có cách nào đáng tin cậy hơn để kiểm tra nếu
postfixđang chạy từ bên trong tập lệnh bash không?
2>&1nhưng kết quả vẫn trống rỗng. Đáng buồn pgreplà không có tùy chọn vì nó không có sẵn trên hệ thống (một trạm đĩa Synology với DSM 5.1).
ps aux | grep [p]ostfix?
psdường như hoạt động. Trên hệ thống DSM pskhông chấp nhận bất kỳ tham số nào khác sau đó w. Nhưng chỉ đơn giản là gọi ps | grep [p]ostfixkhông hoạt động.
statuskết quả đầu ra đểstderr? Cố gắng thêm2>&1vàostatus-command. Ngoài ra, bạn có thể sử dụngpgrep postfix