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

プロセス出力に添付して表示する

ここにはもっと簡単な解決策があると思います。 /proc の下でアクセス可能な疑似ファイルシステムの下で、探している PID に対応する名前のディレクトリを探すだけです。 道。したがって、ID が 1199 のプログラムを実行している場合、cd その中に:

$ cd /proc/1199

次に、fd を探します 下のディレクトリ

$ cd fd

この fd ディレクトリには、プログラムが使用しているファイル記述子オブジェクト (0:stdin、1:stdout、2:stderr) と tail -f のみが保持されます 必要なもの - この場合は stdout):

$ tail -f 1

これとまったく同じことを探していたところ、次のことができることがわかりました:

strace -ewrite -p $PID

まさにあなたが必要としていたものではありませんが、かなり近いものです。

出力のリダイレクトを試みましたが、うまくいきませんでした。プロセスがソケットに書き込んでいたためかもしれませんが、わかりません.


私にとって、これはうまくいきました:

<オール>
  • プロセスの所有者としてログインします (root でも) 許可が拒否されます)

    ~$ su - process_owner
    
  • 他の多くの回答で述べられているように、ファイル記述子を末尾にします。

    ~$ tail -f /proc/<process-id>/fd/1 # (0: stdin, 1: stdout, 2: stderr)
    

  • ここにはいくつかのオプションがあります。 1 つは、コマンドの出力をファイルにリダイレクトし、「tail」を使用してそのファイルに追加された新しい行をリアルタイムで表示することです。

    別のオプションは、一種のテキストベースの端末アプリケーションである「画面」内でプログラムを起動することです。画面セッションはアタッチおよびデタッチできますが、名目上は同じユーザーのみが使用することを意図しているため、ユーザー間で共有したい場合は、お尻の大きな痛みです.


    Linux
    1. Linuxですべてのユーザーの共有ディレクトリを作成する方法

    2. 初心者向けのLinuxcdコマンドチュートリアル(8例)

    3. iノードは何に適していますか?

    1. cd コマンドの man ページがない

    2. コマンドと出力の異なる色

    3. 複数のユーザーのディレクトリを chown する方法は?

    1. filename に続く tail -f の代替

    2. pwd は何を出力しますか?

    3. 特定のディレクトリで ls がハングする