Я пытаюсь заставить свои задания cron выводить ошибки, если задание cron не удается. Я создал команду, которая намеренно не пытается это проверить, например:
* * * * * php /var/some/nonexistent/script.php >> cronLog.log
Я не хочу связываться с использованием MTA, поскольку Google Compute Engine блокирует все исходящие SMTP-запросы на порт 25, но я ничего не вижу в cronLog.log. У меня правильно настроены разрешения, и я могу без проблем писать в cronLog.log, когда скрипт php выполняется успешно. Итак, если вывод успешно передается в cronLog.log во время успешного задания cron, почему он просто исчезает, если команда не выполняется? В syslog тоже ничего нет. Куда идут мои сообщения об ошибках?
Вы не захватываете stderr, в который выводятся сообщения об ошибках. Пытаться
* * * * * php /var/some/nonexistent/script.php >> cronLog.log 2>&1
в 2>&1
перенаправляет stderr на stdout, который сам перенаправляется на cronLog.log.