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")
ただし、コンソールに次のstdoutが表示されます。
Connection to 143.6.22.4 closed by remote host.
xargs: perl: exited with status 255; aborting
私を入れなければなりません1>/dev/空私の文法でこのメッセージを避けますか?
答え1
プロセスには通常、端末に送信される2つの出力ストリーム、つまり標準出力(ファイル記述子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>
答え2
Bashのコンソール/ターミナルログを表示したくない場合は、次のコマンドを使用します。たとえば、不要な要求/応答ログを生成するPHPサーバーを起動した場合は、次のコマンドを使用してこれを行います。
php -S localhost:8989 &> /dev/null