перенаправить вывод команды в / dev / null

Я запускаю следующую строку из моего сценария bash, чтобы запустить скрипт /usr/run.pl на удаленных машинах

xargs -P "$numprocs" -I '{}' -n 1 -- perl -e 'alarm shift; exec @ARGV' -- "$timeout" ssh -nxaq -o ConnectTimeout=5 -o StrictHostKeyChecking=no '{}' /usr/run.sh < <(echo -e "$node") 

но я получаю на консоли следующий стандартный вывод

 Connection to 143.6.22.4 closed by remote host. xargs: perl: exited with status 255; aborting 

где мне нужно поставить 1> / dev / null в мой синтаксис, чтобы избежать этого сообщения?

Есть два потока вывода процесса, которые обычно отправляются на терминал: стандартный вывод (который привязан к файловому дескриптору 1) и стандартная ошибка (которая привязана к файловому дескриптору 2). Это позволяет легко разделить захват ожидаемого выхода, а также сообщения об ошибках или другую диагностическую информацию, которая обычно не выводится.

Когда вы используете перенаправление ( > ), это только выдает стандартный вывод в указанный файл или местоположение, оставляя стандартную ошибку нетронутой. Это позволяет вам увидеть, есть ли ошибки (например, те, которые вы видите).

Если вы хотите отправить весь вывод, включая стандартную ошибку, вам необходимо перенаправить оба потока:

 /path/to/program arg1 arg2 > /dev/null 2>&1 

Или, альтернативно, но более явно:

 /path/to/program arg1 arg2 > /dev/null 2> /dev/null 

Синтаксис 2>&1 означает «Отправить вывод, идущий в настоящее время к файловому дескриптору 2, в то же место, что и выход, идущий в дескриптор файла 1». > опускает значение по умолчанию FD1, поэтому он семантически совпадает с 1> , что может сделать 2> более разумным.