перенаправить вывод команды в / 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 в мой синтаксис, чтобы избежать этого сообщения?

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

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

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

 /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> .

Если вы не хотите показывать журналы консоли / терминала bash, используйте следующую команду, например, я запускаю php-сервер, который генерирует журналы запросов / ответов, которые мне не нужны, я делаю это с помощью этой команды:

 php -S localhost:8989 &> /dev/null