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