パイプ全体の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で実行されているサービスを管理できます。
接線的に関連する: