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.


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 .


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

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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.