
У меня есть несколько задач cron, и некоторые из них не перестают отправлять мне электронные письма.
Примеры задач:
*/2 * * * * php приложение/консоль mautic:email:fetch > /dev/null 2>&1
(Все задачи с этой проблемой являются математическими задачами).
Я попробовал несколько приемов, чтобы избегать электронных писем:
> /dev/null
>/dev/null
>/dev/null 2>&1
>/dev/null 2>&1 || true
|| true
Все они продолжают отправлять письма каждый раз.
Пример электронного письма:
/bin/sh: 1: невозможно создать 1: Отказано в доступе
(Я понимаю, что это странная ошибка, но это пример. Я знаю, что мне нужно устранить ошибку, а не заглушить ее, но я хочу знать, почему я не могу заглушить ее обычным способом).
Вопрос: Почему даже когда я перенаправляю результат задачи или когда использую || true для изменения результата задачи, cron продолжает отправлять письма? Единственное решение, которое я могу найти (по связанному вопросу), это добавить
MAILTO=""
после «нормальных» (или не спамящих) задач cron (и перед этими другими).
Сопутствующий вопрос:Как полностью отключить cronjob на /dev/null/?.
решение1
Ошибка /bin/sh: 1: cannot create 1: Permission denied
, вероятно, вызвана опечаткой в перенаправлении. Возможно, вместо у 2>&1
вас есть 2>1
или 2>1&
. (Обычно попытка создать файл с именем 1
в вашем домашнем каталоге будет успешной, но если файл с именем 1
уже существует и недоступен для записи, то вы получите эту ошибку.)
Причина, по которой эта ошибка не заглушается, заключается в том, что сообщение не исходит от команды, вывод которой был перенаправлен. Сообщение сообщается оболочкой во время попытки настроить перенаправление для команды. Вывод самой оболочки не был перенаправлен, поэтому сообщение собирается cron
и отправляется вам по электронной почте.