Я установил crontab в Cpanel для запуска каждую минуту. Он отлично работает, но я не хочу получать электронную почту каждую минуту. У меня есть вторая вкладка cron, которая запускается каждый день. Я хотел бы получить ответ от этой вкладки. Есть ли способ указать crontab молчать или отправлять только электронную почту при ошибке?
У меня есть:
* * * * * php /home/public_html/folder/file.php 2>&1
Последний бит 2>&1
Я добавил, потому что думал, что это заставит его замолчать.
Из Cpanel Docs:
Вы можете настроить cron для отправки электронного письма каждый раз, когда он запускает команду. Если вы не хотите, чтобы электронное письмо отправлялось для отдельного задания cron, вы можете перенаправить вывод команды в / dev / null следующим образом: mycommand> / dev / null 2> & 1
использовать -q
это означает "тихо" и поэтому не выводит
* * * * * php -q /home/public_html/folder/file.php
Кроме того, спросите себя, почему вы хотите запускать его каждую минуту, это немного чрезмерно.
2>&1
перенаправляет все, что написано на stderr, на stdout
>/dev/null
перенаправляет stdout на / dev / null
cron всегда будет отправлять вам по электронной почте все, что отправлено на stdout или stderr, если оно не перенаправлено в другое место. В идеале ваш PHP-скрипт должен быть переписан так, чтобы он принимал флаг --quiet, который не записывает кучу бесполезного дерьма в stdout, который вы затем можете использовать в своей работе cron.
Вариант ленивого человека - поставить сценарий оболочки вокруг вашего задания cron, которое не позволит ему отправлять вам электронные письма, если ваша команда не завершится ненулевым.
Правильная установка будет
>/dev/null
Это игнорирует стандартный вывод и отправляет вам электронное письмо только в случае ошибки
Ваша текущая установка не поддерживает стандартный вывод, поэтому вы получаете электронное письмо при каждом запуске.