バックグラウンドで実行されているプロセス(shスクリプト)があり、このプロセスの出力を中断することなく表示できるかどうかは疑問です。Linuxですでに実行中のプロセスの出力を表示
このプロセスはいくつかのアプリケーションによって実行されました。それ以外の場合は、後で表示するために画面に貼り付けていました。終了するのに1時間かかることがあり、エラーなしで正常に実行されていることを確認したい。
バックグラウンドで実行されているプロセス(shスクリプト)があり、このプロセスの出力を中断することなく表示できるかどうかは疑問です。Linuxですでに実行中のプロセスの出力を表示
このプロセスはいくつかのアプリケーションによって実行されました。それ以外の場合は、後で表示するために画面に貼り付けていました。終了するのに1時間かかることがあり、エラーなしで正常に実行されていることを確認したい。
:
は、実行中のプログラムがすでにttyに接続されている場合、それは動作しますが、私はしないでくださいあなたがバックグラウンドであなたのプログラムを走らせるなら、それがうまくいくかどうかを知る。
少なくとも、それは良いヒントを与えるかもしれません。 :)
ptrace(2)
を使用してプログラムから終了コードを取得することもできます。それ以外の場合は、gdb -p <pid>
を使用してプロセスにアタッチするだけで、プログラムが終了すると印刷されます。それは、出力のどのような種類
(gdb) p close(1)
$1 = 0
(gdb) p creat("/tmp/stdout", 0600)
$2 = 1
http://etbe.coker.com.au/2008/02/27/redirecting-output-from-a-running-process/
/proc/[pid]/fd/[012]
トリプルに接続しようとする可能性がありますが、うまくいかない可能性があります。
私の心に浮かぶ次のアイデアはstrace -p [pid]
ですが、あなたは "prittified"出力を得ます。可能な解決策は、ptrace(2)
を使用して小さなプログラムを作成してwrite(2)
にフックし、どこかの場所にデータを書き込むことで自分自身をひかれることです。 はで動作しますが、特にCプログラミングに慣れていない場合は数秒で完了しません。
残念ながら、私はあなたが欲しいものを正確に行うプログラムを考えることができません。なぜなら、あなた自身で書く方法のヒントを与える理由です。がんばろう!これを行うには、Linuxでのptrace(2)を使用するプログラムは、retty、すでに存在し
です:
また、GDBを使用してファイル記述子を操作することができますか?プレーンテキストですか?もしそうなら、あなたは単に "tail -f
問題は、私がこのプロセスを開始しなかったのは、プロバイダが起動したアプリケーション(cpanelインストーラ)によって起動されたもので、出力を他のファイルにリダイレクトしていないということでした。そこに出力を表示する方法はありますか? –