Zastąp MAILTO dla pojedynczego wpisu pliku crontab

20

Mamy konto roli w pracy, które ma dość dużą tabelę. Jego MAILTO jest wskazywane na wspólny adres, dzięki czemu wielu z nas zostanie powiadomionych, jeśli coś się nie powiedzie.

Chciałbym dodać wpis do tego crontab, ale chcę, aby otrzymywałem powiadomienie tylko, jeśli coś pójdzie nie tak. Czy istnieje sposób, aby zmienić MAILTO dla tego jednego wpisu lub w inny sposób osiągnąć mój cel?

mikrofon
źródło
Innym podejściem do sugerowanych do tej pory jest użycie funkcji, która polega na tym, że cron wysyła wiadomość e-mail do użytkownika, który uruchamia zadanie, więc zrób innego użytkownika tylko dla tego zadania i przekaż mu e-maile.
Hayden Thring,

Odpowiedzi:

21

Zawsze możesz po prostu zrobić:

MAILTO=you
* * * ...  your cron job
MAILTO=normal.destination
freiheit
źródło
1
Czy ludzie, którzy głosowali za tym, naprawdę to przetestowali? Jeśli tak, to jaką implementację crona?
user1338062,
Przetestowałem to z cronem ICS / Vixie, który jest dostarczany z Ubuntu 14.04 („3.0pl1-124ubuntu2”) i działa tam dobrze.
Nils Toedtmann
Brzydki, ale właściwie jedyny sposób na rozwiązanie tego. Pracuje!
stamster
10

Zawsze możesz przesłać wszystkie dane wyjściowe do polecenia mail z poprawnym adresem w podpowłoce. Dopóki nie ma nic na STDOUT lub STDERR cron nie wyśle ​​e-maila

10 * * * * sh -c 'thisoncommand 2> & 1 | mail [email protected]

Anthony DeStefano
źródło
1
To nie działa - polecenie „mail” wysyła niezależnie od tego, czy otrzyma dane wyjściowe. Dostaję więc pustą wiadomość o sukcesie, a tym, czego chcę, nie jest wiadomość o sukcesie.
Mike
5
Ładny! Aby uniknąć pustych wiadomości e-mail z polecenia mail, użyj tego parametru: -e (lub -E dla niektórych ..)
3

Nie pamiętam, czy cron przygotowuje plik do odczytu w zmiennych środowiska, więc nie jestem pewien, czy można zmienić MAILTOwiele razy w jednym pliku. Ale zawsze możesz podzielić go na inny plik i wstawić /etc/cron.d/fooza pomocą [email protected].

Brendan
źródło