mbufferコマンドでstderrをファイルにリダイレクトしようとしています。動作しません。 stderr出力がまだ画面に表示され、エラー.txtが空です。私のコマンドは次のとおりです。
$ raspivid -w 1280 -h 720 -o - | mbuffer -m 60M -f -o /tmp/temp_video.h264 2> errors.txt &
[2] 5278
in @ 1006 KiB/s, out @ 1006 KiB/s, 9292 KiB total, buffer 0% full^C
in @ 0.0 KiB/s, out @ 0.0 KiB/s, 9.9 MiB total, buffer 17% full^C
ちなみに、リダイレクトしたいstderr出力は「@ 1006KB / s ...」です。
私は何が間違っていましたか?ありがとうございます!
ベストアンサー1
あなたは何も間違えませんでした。mbuffer
/dev/tty
標準エラーが読み取れない場合は、もう一度開きます。、リダイレクトを無効にしてください。
この-q
オプションを使用してステータス出力を無効にできます。文書によると、以下を使用してステータスを-l
ファイルに書き込むことができます。
mbuffer -m 60M -f -o /tmp/temp_video.h264 -l errors.txt &
ただし、ステータスログにエラーがあります。常に標準エラーが発生します、ログではありません。
この問題を解決する方法は次のとおりです。
パッケージソースコードのダウンロード
apt-get source mbuffer
パッチを追加(パッケージが必要
quilt
)cd mbuffer-20161115 quilt new 13-status-log.patch quilt add mbuffer.c
mbuffer.c
461(Debian 8)または472(Debian 9)の行を編集して次に変更します。nw = write(Log,buf,strlen(buf));
パッチを保存
quilt refresh
パッケージの再構築(これは必要
dpkg-dev
でdevscripts
パッケージです)dch -n "Fix the status log to honour the -l option." dch -r ignored dpkg-buildpackage -us -uc
(
dpkg-buildpackage
依存関係の欠落について不満がある場合は、その依存関係をインストールして再試行してください。)更新されたパッケージのインストール
sudo dpkg -i ../mbuffer_*-?.1_*.deb