Хватит cron отправлять мне письма

5318
Richard Hoskins

Как я могу остановить cron отправлять мне по электронной почте результаты заданий, которые я планирую?

10

3 ответа на вопрос

15
OscarRyz

Установив переменную окружения "MAILTO" как ""

Что-то вроде:

SHELL=/bin/bash MAILTO=    01 * * * * /your/path/to/script/here.sh 
12
Rob

Если вы хотите, чтобы одно задание прекратило работу с электронной почтой, просто добавьте> / dev / null 2> & 1 к нему

Например:

0 * * * * /home/script >/dev/null 2>&1 
Если вы уверены, что один запуск завершится до следующего запуска, может быть, стоит перенаправить вывод в именованный файл, а не в / dev / null: это дает возможность проверить, что произошло с последним запуском, если вы подозреваете проблема. mas 15 лет назад 1
4
dbr

Cron только отправляет вам электронное письмо, если есть вывод, либо на, stdoutлибо stderr.

Если это сценарий, который вы написали, сделайте его менее многословным - удалите ненужные echoили printутверждения. Перенаправление stdoutна /dev/nullтакже является допустимым решением:

2 * * * * /my/script > /dev/null 

Если после этого вы по-прежнему получаете сообщения, значит, выход включен stderr, поэтому это должна быть ошибка, которую следует устранить. Если нет, вы можете перенаправить stderrс /dev/nullпомощью ..

2 * * * * /my/script > /dev/null 2> /dev/null 

... хотя игнорирование сообщений об ошибках, как правило, плохая идея! (Как вы узнаете, когда работа cron будет прервана?)

Вы можете перенаправить вывод конкретной команды из stderr в stdout, используя, 2>&1например:

command_which_prints_messages_to_stderr 2>&1 # redirect stderr to stdout 

..то прямой, stdoutчтобы /dev/nullв вашей хронах работы - таким образом вы молчание громких команд, не теряя при этом сообщениях об ошибках