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, result
biế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 status
từ 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>&1
nhưng kết quả vẫn trống rỗng. Đáng buồn pgrep
là 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
?
ps
dường như hoạt động. Trên hệ thống DSM ps
khô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]ostfix
không hoạt động.
status
kết quả đầu ra đểstderr
? Cố gắng thêm2>&1
vàostatus
-command. Ngoài ra, bạn có thể sử dụngpgrep postfix