Hiển thị số lượng tin nhắn trong hàng đợi thư linux


12

Có một lệnh đơn giản để tìm ra số lượng thư hiện tại trong hàng đợi thư linux không? mailqbỏ ra một danh sách dài dòng, nhưng nó không thuận tiện cho một cái nhìn tổng quan nhanh chóng.

Tôi đang sử dụng Ubuntu và postfix.


1
Đại lý chuyển thư nào bạn đang sử dụng?
Bart Silverstrim

như bart đã nói, hãy cho chúng tôi biết bạn đang sử dụng MTA nào để chúng tôi có thể cung cấp cho bạn một phê duyệt cụ thể và chính xác hơn.
Giải thưởng

gửi thư, xin lỗi.
dmp

Chắc chắn đó là sendmail chứ không phải postfix? Chỉ cần chắc chắn ...
Bart Silverstrim

bắt tốt, postfix của nó không sendmail.
dmp

Câu trả lời:


25

Nếu bạn chỉ muốn biết số lượng tin nhắn trong hàng đợi, thì những điều sau đây sẽ giúp bạn có câu trả lời nhanh:

find /var/spool/postfix/deferred -type f | wc -l

Có ba hàng đợi khác. Xem http://www.porcupine.org/postfix/queueing.html để biết chi tiết.


1
trong trường hợp của tôi là thế này: find /var/spool/mqueue -type f | wc -lvà điều này find /var/spool/mqueue-rx -type f | wc -lvì tôi có hai hàng đợi và không sử dụng postfix.
Jeroen Wiert Pluimers

13

Bạn có thể lọc đầu ra và chỉ hiển thị dòng cuối cùng:

mailq | tail -n 1

2
Đó là một ý tưởng hay, nhưng hàng đợi rất lớn, vì vậy phải mất một thời gian dài để trả lại kết quả. Còn gì nhanh hơn không ..?
dmp

Nếu hàng đợi thực sự rất lớn, có thể có một vấn đề khác (trừ khi bạn là ISP hoặc dịch vụ lưu trữ thư). Bạn không nên có một bản sao lưu lớn đến mức bạn phải chờ vài phút để có kết quả này ...?
Bart Silverstrim

Tôi chắc chắn có một vấn đề khác, nhưng điều đó sẽ đến trong một câu hỏi khác;)
dmp

3

Là một vấn đề liên quan, bạn cũng có thể có được số lượng thư trong hộp thư của mình được lưu trữ ở định dạng mbox, bằng cách sửa đổi đề xuất của Brian Showalter bằng lệnh "tiêu đề thư". Ví dụ: tôi có dòng này trong tệp .bashrc của mình:

if [ -s /var/mail/$(whoami) ] ; then echo -e "\nYou have $(ls -s -h /var/mail/$(whoami) | cut -d" " -f 1) of mail.  Number of messages: $(mail --file /var/mail/$(whoami) --headers | wc -l) ($(mail --file /var/mail/$(whoami) --headers | sed '/^>* *[0-9]/d' | wc -l) unread)" ; fi

1

Đây là

find /var/spool/postfix/deferred -type f | wc -l

ý tưởng tốt, nhưng nó không hoạt động nếu Zabbix-Agent của tôi không chạy như một root. Vì vậy, tôi đã sử dụng này

NUM=`mailq | grep -E "Requests" | awk '{print $5}'`; if [ -z "$NUM" ]; then echo "0"; else echo $NUM; fi

cho UserParameter của riêng tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.