1. ホーム
  2. linux

[解決済み] LinuxでBashを使ってすべての出力をファイルにリダイレクトしますか?[重複している]

2022-03-06 21:09:03

質問

私は、コマンドライン・プログラムからのすべての出力をファイルにリダイレクトしようとしています。 私はBashを使っています。 出力の一部はファイルにリダイレクトされますが、一部はターミナルに表示されたままで、ファイルには保存されません。

同様の症状はこちらにも記載されています。

すべての出力をファイルにリダイレクトする

しかし、私は提案された解決策(stderrをキャプチャ)を試しましたが、成功しませんでした。

<cmd> <args> > stdout.txt 2> stderr.txt

ファイル stderr.txt が作成されましたが、空です。

可能性のある手がかりは、コマンドライン・プログラムが同じマシン上のサーバーと通信しているクライアントであることです。 この場合、出力の一部が サーバー .

ターミナルからの出力を、その発信元とは関係なくすべてキャプチャする方法はありますか?

EDITです。

不足している出力はサーバーで生成されていることを確認しました。 別の端末でコマンドを実行すると、両方の端末に何らかの出力が発生します。コマンド端末からのすべての出力をファイルにパイプすることができます。 これは、サーバーの出力をキャプチャする方法についての問題を提起していますが、それは別の問題です。

どのように解決する?

同じターミナルでサーバーを起動している場合、ターミナルに書き込まれていると思われるのはサーバーの標準エラーであり、これをキャプチャしていないことになります。

すべてをキャプチャーするには、実行するのが一番でしょう。

script output.txt

を、サーバまたはクライアントのいずれかを起動する前に実行します。これにより新しいシェルが起動し、ターミナルの出力はすべて output.txt にリダイレクトされ、ターミナルも同様に出力されます。次に、その新しいシェルの中からサーバーを起動し、次にクライアントを起動します。画面に表示されるすべてのもの (あなたの入力と、そのシェル内からターミナルに書き込まれたすべての出力の両方) が、このファイルに書き込まれます。

終了したら、"exit" とタイプして script コマンドを実行します。