На моем Ubuntu-Desktop и на моем debian-сервере у меня есть скрипт, который нужно выполнять каждую минуту (скрипт, который вызывает тикет моего космического онлайн-браузера ).
Проблема в том, что на производных от Debian cron регистрируется при /var/log/syslog
каждом запуске. Я в конечном итоге видя повторил сообщение он был казнен снова и снова /var/log/syslog
:
Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1)
Я знаю, что для подавления вывода программы я могу перенаправить его /dev/null
, например, чтобы скрыть все сообщения об ошибках и предупреждения от программы, я могу создать строку в crontab следующим образом
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
Но я хотел бы запустить cronjob и быть уверенным, что все сгенерированные выходные данные или ошибки передаются в NULL, поэтому он не генерирует никаких сообщений в системном журнале и не генерирует электронные письма.
РЕДАКТИРОВАТЬ:
есть решение для перенаправления cron-журналов в отдельный журнал, как предложено здесь, путем изменения/etc/syslog.conf
Но недостаток в том, что тогда ВСЕ выходные данные всех cronjobs перенаправляются.
Можно ли как-то перенаправить только один cronjob в отдельный файл журнала? Желательно настраивается внутри самого cron.hourly
файла.
MAILTO=""
как 1-я строка crontab предотвратит любые электронные письма. Кроме того, используйте полную строку trifecta в командной строке, если вы подавляете все выходные данные. Все 3 вида перенаправляются этой строкой: >/dev/null 2>&1
- Конечно, вы можете сделать так, чтобы скрипт включал периодические записи в отдельный журнал.
MAILTO=""
в начало файла cron. Это будет подавлять все электронные письма. И я никогда не слышал о демоне cron, который отправляет вывод задания в системный журнал (но я думаю, что это возможно).