Что означает «/dev/null 2>&1» в записи Cronjob?

Что означает «/dev/null 2>&1» в записи Cronjob?

Может ли кто-нибудь объяснить мне, что означает "2>&1" в приведенном ниже задании cron?

0 23 * * * wget -q -O /dev/null "https://example.com/index.php" > /dev/null 2>&1

решение1

Это означает, что stderr( 2- содержащий сообщения об ошибках из выполненной команды или скрипта) перенаправляется ( >&) на stdout( 1- вывод команды), а последний перенаправляется на /dev/null(нулевое устройство).

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

Более подробную информацию о перенаправлениях вывода можно найти в Linux Documentation Project.здесьиздесь. Нулевое устройство описаноздесь.

решение2

Я хотел бы немного расширить ответ @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.

Связанный контент