Stderrリダイレクトが機能しません。

Stderrリダイレクトが機能しません。

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 &

ただし、ステータスログにエラーがあります。常に標準エラーが発生します、ログではありません。

この問題を解決する方法は次のとおりです。

  1. パッケージソースコードのダウンロード

    apt-get source mbuffer
    
  2. パッチを追加(パッケージが必要quilt

    cd mbuffer-20161115
    quilt new 13-status-log.patch
    quilt add mbuffer.c
    
  3. mbuffer.c461(Debian 8)または472(Debian 9)の行を編集して次に変更します。

    nw = write(Log,buf,strlen(buf));
    
  4. パッチを保存

    quilt refresh
    
  5. パッケージの再構築(これは必要dpkg-devdevscriptsパッケージです)

    dch -n "Fix the status log to honour the -l option."
    dch -r ignored
    dpkg-buildpackage -us -uc
    

    dpkg-buildpackage依存関係の欠落について不満がある場合は、その依存関係をインストールして再試行してください。)

  6. 更新されたパッケージのインストール

    sudo dpkg -i ../mbuffer_*-?.1_*.deb
    

おすすめ記事