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

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


chto_oznachaet_dev_null_2_1_ili_perenapravlenie_stdin_stdout_i_stderr

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

chto_oznachaet_dev_null_2_1_ili_perenapravlenie_stdin_stdout_i_stderr [2018/08/18 08:46]
chto_oznachaet_dev_null_2_1_ili_perenapravlenie_stdin_stdout_i_stderr [2020/06/13 13:45] (текущий)
Строка 1: Строка 1:
 +====== Что означает "> /dev/null 2>&1" или перенаправление STDIN, STDOUT и STDERR? ======
  
 +
 +{{htmlmetatags>
 +metatag-description=(Стандартные потоки ввода-вывода в системах типа UNIX: сstdin, stdout, stderr, stdaux, stdprn.
 +}}
 +
 +{{ ::process_stdin_stdout_stderr_return-code.png?nolink&600 |}}
 +Существует три стандартных значения ввода и вывода для программ (их можно представить как «потоки данных», они пришли из языка программирования C).
 +
 +  - **STDIN** - ввод получают от клавиатуры (интерактивная, диалоговая программа), или из программы, обрабатывающей вывод другой программы.
 +  - **STDOUT** - вывод результат программы обычно печатается в стандартной вывод
 +  - **STDERR** - вывод сообщений об ошибках
 +
 +Часто к ним обращаются не по имени, а по номеру (по умолчанию, если не указать номер, подразумеваться STDOUT):
 +**0 — STDIN, 1 — STDOUT и 2 — STDERR**.
 +
 +Когда программа начинает выполняться, автоматически открываются пять потоков: стандартный ввод (**stdin**), стандартный вывод (**stdout**), стандартный вывод для сообщений об ошибках (**stderr**), стандартный последовательный порт (**stdaux**) и стандартное устройство печати (**stdprn**).
 +
 +<note tip>Оператор > («больше чем»), переадресовывает вывод программы. </note>
 +<note>/dev/null & выполнение в фоне
 +
 +/dev/null && после выполнения без ошибок выполнить следующую коменду
 +
 +[command] & — запускает команду в фоне, т.е. управление отдаётся командному интерпретатору (bash, например), а [command] будет выполняться «параллельно».
 +
 +[command] && — подразумевает, что следующая команда будет выполнена только в том случае, если [command] была выполнена успешна (вернула 0).
 +</note>
 +
 +  * Пример. Если нужно получить вывод скрипта и никаких ошибок: 2>/dev/null<file>
 +*/10 * * * * root /var/www/jobs/cronload.sh > /dev/null 2>/dev/null
 +</file>
 +  * Пример. [[cron]]. Если нужно получать только сообщения об ошибках: > /dev/null<file>
 +*/10 * * * * root /var/www/jobs/cronload.sh > /dev/null
 +</file>
 +  * Пример. [[cron]]. Если нужно весь вывод указанной команды удалить, то есть даже при ошибках скрипт будет молчать.<file>
 +*/10 * * * * root /var/www/jobs/cronload.sh > /dev/null 2>&1
 +</file>