実行中のプロセスの出力リダイレクトを変更するには?

実行中のプロセスの出力リダイレクトを変更するには?

出力をリダイレクトする方法と方法を知っています。それらを鎮めるバッシュから。これで、誤って出力リダイレクト部分をコマンド(2>&1または> /tmp/mystdout)に追加するのを忘れてしまいましたstdoutstderr私は本当にアプリケーションを終了して再起動したくありません。

要求どおりに具体的に作成してください。ザイルズ彼の意見では、私は特に次のようなシナリオでこれを扱いたいと思います。

  • 無効な出力ファイル
  • stderr次にリダイレクトするのを忘れました。stdout

または両方の組み合わせ

たとえば、私はApacheを実行しており、次のことができます。バラよりファイル記述子:

/proc/8019/fd/0 -> /dev/null
/proc/8019/fd/1 -> /dev/null
/proc/8019/fd/2 -> /var/log/apache2/error.log

ベストアンサー1

リダイレクトを使用できます(https://github.com/jerome-pouiller/reredirect/)。

reredirect -m /dev/null <PID>

後で、次のコマンドを使用してプロセスの初期出力を復元できます。

reredirect -N -O <M> -E <N> <PID>

(以前に開始されたリダイレクトによって提供されます)<M><N>

reredirect は、README他のコマンドや stdout または stderr にリダイレクトする方法も説明します。

おすすめ記事