GNU/Linux >> Linux の 問題 >  >> Linux

実行中のプロセスの出力リダイレクトを変更するにはどうすればよいですか?

出力をリダイレクトする方法とbashでそれらを抑制する方法を知っています。ここで、出力リダイレクト部分をコマンドに追加するのを誤って忘れたとします(例:2>&1 または> /tmp/mystdout )そして私のバックグラウンドプロセスはすでにしばらく実行されていますが、それでもstdoutの場所に変更できますか およびstderr に書かれていますか?アプリケーションを強制終了して再起動したくないのです。

Gillesがコメントで尋ねたように、より具体的に言うと、これらのシナリオで具体的にいじりたいと思います。

  • 間違った出力ファイル
  • stderrをリダイレクトするのを忘れた stdout

または両方の組み合わせ

例えば。 Apacheを実行していて、見ることができます。 ファイル記述子:

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

承認された回答:

reredirect(https://github.com/jerome-pouiller/reredirect/)を使用してこれを行うことができます。

reredirect -m /dev/null <PID>

次のようなものを使用して、後でプロセスの初期出力を復元できます。

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

<M> および<N> 以前のリダイレクトの起動によって提供されます。

READMEをリダイレクトする また、別のコマンドにリダイレクトする方法、またはstdoutまたはstderrのみをリダイレクトする方法についても説明します。


Linux
  1. 実行中のプロセスの環境を変更しますか?

  2. リダイレクションの使い方を覚える方法は?

  3. ホスト名を変更する方法は?

  1. curl -v の出力をパイプまたはリダイレクトするにはどうすればよいですか?

  2. system() の出力をファイルにリダイレクトする方法は?

  3. 実行中のプロセスの絶対パスを知るにはどうすればよいですか?

  1. 別のBashセッションで実行中のプロセスの出力を表示する方法は?

  2. Linux –実行中のプロセスの壁掛け時計の時間を取得する方法は?

  3. 実行中のプロセスのウォールクロック時間を取得するにはどうすればよいですか?