パイプの出力を> / dev / nullにリダイレクトする方法

パイプの出力を> / dev / nullにリダイレクトする方法

パイプ全体のSTDOUTとSTDERRを/dev/null

これが私のコマンドだと思います。

sudo lsof -i:22000 -t | xargs kill -9

私はこれが間違ったアプローチであることを知っています。

sudo lsof -i:22000 -t | xargs kill -9 >/dev/null 2>&1

>/dev/null 2>&1単純な追加はSTDINの一部として解釈されるので、パイプには何の影響も与えないので、これをどのように達成できますかxargs kill -9

答え1

パイプの出力

sudo lsof -i:22000 -t | xargs kill -9 >/dev/null 2>&1

/dev/null指摘したように、最後のリダイレクトはコマンドにのみ影響し、xargs標準エラーストリームは端末に接続されたままであるため、完全にリダイレクトされません。sudoただし、技術的に言えば、リダイレクトは「標準入力の一部」ではありませんxargs。標準入力はパイプの左側のコマンドxargsから来ます。sudo

パイプライン全体をリダイレクトする必要があります。

{ your pipeline; } >/dev/null 2>&1

つまり、

{ sudo lsof -i:22000 -t | xargs kill -9; } >/dev/null 2>&1

あるいは、個々のセクションを個別にリダイレクトすることもできます。

これは、再度使用しない「ワンタイム」ワンタイムコマンドか、システムにとって重要なメンテナンススクリプトに入るコードラインであるかに応じて、パイプラインの左側を次のように作成できます。通常の動作条件で動作するように診断メッセージはまったく生成されません(したがって、エラーメッセージを隠す必要はありません)。または、systemdまたは一部の同等のサービスフレームワークを介してポート22000で実行されているサービスを管理できます。

接線的に関連する:

関連情報