Wyświetla liczbę wiadomości w kolejce linuksowej

12

Czy istnieje proste polecenie, aby sprawdzić bieżącą liczbę wiadomości w kolejce poczty linux? mailqzrzuca pełną listę, ale nie jest to wygodne dla szybkiego przeglądu.

Używam Ubuntu i Postfix.

dmp
źródło
1
Jakiego agenta przesyłania poczty używasz?
Bart Silverstrim
jak powiedział Bart, powiedz nam, z jakiego MTA korzystasz, abyśmy mogli dać ci bardziej konkretną i poprawną aplikację.
Prix
sendmail, przepraszam.
dmp
Jasne, że to sendmail, a nie postfiks? Tylko upewniam się ...
Bart Silverstrim
dobry połów, jego postfiks nie jest sendmailem.
dmp

Odpowiedzi:

25

Jeśli chcesz tylko poznać liczbę wiadomości znajdujących się w odroczonej kolejce, poniższe informacje powinny dać ci szybką odpowiedź:

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

Istnieją trzy inne kolejki. Szczegółowe informacje można znaleźć na stronie http://www.porcupine.org/postfix/queueing.html .

Brian Showalter
źródło
1
w moim przypadku było tak: find /var/spool/mqueue -type f | wc -li to, find /var/spool/mqueue-rx -type f | wc -lponieważ mam dwie kolejki i nie używam Postfiksa.
Jeroen Wiert Pluimers
13

Możesz filtrować dane wyjściowe i wyświetlać tylko ostatni wiersz:

mailq | tail -n 1
Jaskółka oknówka
źródło
2
To fajny pomysł, ale kolejka jest ogromna, więc zwrócenie wyniku zajmuje dużo czasu. Coś szybszego ..?
dmp
Jeśli kolejka jest naprawdę ogromna, może występować inny problem (chyba że jesteś usługodawcą internetowym lub usługą hostingową poczty). Nie powinieneś mieć kopii zapasowej tak dużej, że musisz poczekać kilka minut na te wyniki ...?
Bart Silverstrim
Jestem pewien, że jest jeszcze inny problem, ale przyjdzie to w innym pytaniu;)
dmp
3

W związku z tym można również uzyskać liczbę wiadomości w skrzynce pocztowej przechowywanych w formacie mbox, modyfikując sugestię Briana Showaltera za pomocą polecenia „mail - headers”. Na przykład mam ten wiersz w moim pliku .bashrc:

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
Greg Marks
źródło
1

To jest

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

dobry pomysł, ale to nie działa, jeśli mój Zabbix-Agent nie działa jako root. Więc użyłem tego

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

dla mojego własnego parametru użytkownika.

Mareg
źródło