Что означает "> /dev/null 2>&1" или перенаправление STDIN, STDOUT и STDERR?

Существует три стандартных значения ввода и вывода для программ (их можно представить как «потоки данных», они пришли из языка программирования C).

  1. STDIN - ввод получают от клавиатуры (интерактивная, диалоговая программа), или из программы, обрабатывающей вывод другой программы.
  2. STDOUT - вывод результат программы обычно печатается в стандартной вывод
  3. STDERR - вывод сообщений об ошибках

Часто к ним обращаются не по имени, а по номеру (по умолчанию, если не указать номер, подразумеваться STDOUT): 0 — STDIN, 1 — STDOUT и 2 — STDERR.

Когда программа начинает выполняться, автоматически открываются пять потоков: стандартный ввод (stdin), стандартный вывод (stdout), стандартный вывод для сообщений об ошибках (stderr), стандартный последовательный порт (stdaux) и стандартное устройство печати (stdprn).

Оператор > («больше чем»), переадресовывает вывод программы.
/dev/null & выполнение в фоне

/dev/null && после выполнения без ошибок выполнить следующую коменду

[command] & — запускает команду в фоне, т.е. управление отдаётся командному интерпретатору (bash, например), а [command] будет выполняться «параллельно».

[command] && — подразумевает, что следующая команда будет выполнена только в том случае, если [command] была выполнена успешна (вернула 0).

  • Пример. Если нужно получить вывод скрипта и никаких ошибок: 2>/dev/null
    */10 * * * * root /var/www/jobs/cronload.sh > /dev/null 2>/dev/null
  • Пример. Использование планировщика cron в Linux. Если нужно получать только сообщения об ошибках: > /dev/null
    */10 * * * * root /var/www/jobs/cronload.sh > /dev/null
  • Пример. Использование планировщика cron в Linux. Если нужно весь вывод указанной команды удалить, то есть даже при ошибках скрипт будет молчать.
    */10 * * * * root /var/www/jobs/cronload.sh > /dev/null 2>&1
PQ VPS сервера в 28+ странах.