
次のコマンドで呼び出される Euro Truck Simulator 2 用のサーバーがあります。
LD_LIBRARY_PATH='$ORIGIN/../../linux64' eurotrucks2_server
サーバーの実行中に、コンソールに次の行が表示されることがあります (これを非表示にしたいです):
src/steamnetworkingsockets/clientlib/steamnetworkingsockets_sdr_common.h (564) : m_pServer->m_nReplyTimeoutsSinceLastRecv == 0
| grep -v "Timeout"
しかし、または を追加するたびに| grep -v "steamnetworkingsockets"
、サーバーの出力は次の行で切り捨てられます。
Setting breakpad minidump AppID = 227300
grep のオプションも試しましたが--line-buffered
うまくいきませんでした。grep を削除して使用しても| tail -f
同じ結果になりました。
出力全体は次のとおりです。https://paste.debian.net/hidden/290d8573/
ありがとう
答え1
唯一|
のキャッチ標準出力(stdout)ストリームに送られるメッセージは標準誤差(stderr)ストリーム。stderrgrep
メッセージを非表示にするには、XY問題。
Y問題の解決
grep
両方を同時に行うには、stderrストリームをstdoutに転送する必要があります2>&1
。例:
eurotrucks2_server 2>&1 | grep -v "Timeout"
X問題の解決策
stderr出力を破棄します
2>/dev/null
。例:eurotrucks2_server 2>/dev/null
stderr出力をログファイルに転送(追加)します
2>>/path/to/error.log
。例:eurotrucks2_server 2>>/var/log/eurotrucks2_server_error.log