
Может ли кто-нибудь объяснить мне, что означает "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
.