Назад | Перейти на главную страницу

как заставить php crontab молчать

Я установил 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

Это игнорирует стандартный вывод и отправляет вам электронное письмо только в случае ошибки

Ваша текущая установка не поддерживает стандартный вывод, поэтому вы получаете электронное письмо при каждом запуске.