Что означает «/dev/null 2>&1» в записи Cronjob?
Может ли кто-нибудь объяснить мне, что означает выполнение «2>&1» здесь, в приведенном ниже задании cron?
0 23 * * * wget -q -O /dev/null "https://example.com/index.php" > /dev/null 2>&1
2 ответа
Это означает, чтоstderr
(2
- содержащий сообщения об ошибках выполненной команды или скрипта) перенаправляется (>&
) кstdout
(1
— вывод команды) и что последняя перенаправляется на/dev/null
(нулевое устройство).
Таким образом, вы можете подавить все сообщения, которые могут быть выданы выполняемой командой. В cron это часто делается для того, чтобы избежать рассылки множества ненужных сообщений от служебных сценариев. Тем не менее будьте осторожны с этим, поскольку некоторые сообщения могут быть важными.
Дополнительную информацию о перенаправлении вывода можно найти в The Linux Documentation Project здесь и здесь . Нулевое устройство описано здесь .
Я просто хотел бы немного расширить ответ @digijay, объяснив не « что
> /dev/null 2>&1
делает ", но " почему оно там ".
1. Действия Cron записывают соответствующие данные в разные системные файлы. Например, популярные места для регистрации ошибок cron включают :/var/log/cron
,/var/log/messages
и/var/log/syslog
.
2. По умолчанию задания cron отправляют электронное письмо на учетную запись пользователя, выполняющего задание cron.
Итак, чтобы избежать случаев 1 и 2 (вы не хотите ни видеть какую-либо информацию/журналы ошибок, ни получать электронные письма от cron, вы просто хотите, чтобы cron работал молча), вам следует перенаправитьstderr
иstdout
к/dev/null
.