画面にstderrのみを表示し、stdoutとstderrをファイルに書き込みます。

画面にstderrのみを表示し、stdoutとstderrをファイルに書き込みます。

これを達成するためにBASHマジックをどのように使用できますか?
私は画面でstderr出力を見たいのですが、
stdoutとstderrの両方がファイルに書き込まれることを望みます。

説明:stdoutとstderrが同じファイルに入るようにしたいと思います。発生順に。
残念ながら、以下の答えのどれもこれに該当しません。

ベストアンサー1

リダイレクトがない場合や他に何もない場合でも、生成さ>logfile 2>&1れた順序で出力が表示されるという保証はありません。

まず、アプリケーションのstdoutはラインバッファリング(ttyに)またはバッファリング(パイプに)されますが、stderrはバッファリングされていないため、読者が関係する限り、出力順序間の関係は壊れます。構築可能なパイプラインの後続の段階では、両方のストリームに対して決定論的に順番にアクセスすることはできません(概念的には並列に発生し、常にスケジューラによって制限されます。)読者がスライスを取得するまで、両方のパイプに記録し、どちらが最初に来たのかわかりません)。

「発生順序」は、アプリケーションでのみ実際に知ることができます。 stdout / stderr間の出力順序はよく知られている(おそらく古典的な)問題です。

おすすめ記事