Инструменты пользователя

Инструменты сайта


Боковая панель

Связь

chto_oznachaet_dev_null_2_1_ili_perenapravlenie_stdin_stdout_i_stderr

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

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

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

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

Оператор > («больше чем»), переадресовывает вывод программы.
/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. Если нужно получать только сообщения об ошибках: > /dev/null
    */10 * * * * root /var/www/jobs/cronload.sh > /dev/null
  • Пример. cron. Если нужно весь вывод указанной команды удалить, то есть даже при ошибках скрипт будет молчать.
    */10 * * * * root /var/www/jobs/cronload.sh > /dev/null 2>&1



chto_oznachaet_dev_null_2_1_ili_perenapravlenie_stdin_stdout_i_stderr.txt · Последние изменения: 2014/12/09 08:56 (внешнее изменение)