コンソールの出力を確認するためにnohupを復元/回復する方法はありますか?
-
27-09-2019 - |
質問
チャンスは非常に低いことを知っていますが、最近ノーフドプロセスが出力していることを確認する方法はありますか?
私はまだこのプロセスを開いていますが、すべての出力を /dev /nullにリダイレクトして実行します。
そのようなプロセスをコンソールに戻す方法はありますか、それとも絶望的ですか:(
乾杯
解決
方法はありますが、それは単純ではありません。トリックはDUP2を使用することであり、プログラムがLIBCに対してリンクされているという事実に依存します(すべてのC/C ++アプリケーションはそうですが、たとえばJavaアプリケーションはそうではありません))
- GDBを使用してプロセスに接続します
gdbプロンプトで以下を実行して、stdoutを /tmp /newfileにリダイレクトします
$ print dup2(open( "/tmp/newfile"、0)、1)
以下を実行して、stderrを /tmp /newfileにリダイレクトします
$ print dup2(open( "/tmp/newfile"、0)、2)
- プロセスと完了からGDBを取り外します
何 dup2 そうです
ファイル記述子を複製すると、これは、stdout/stderr(1および2)と開いて返される新しいファイル記述子の両方を交換可能に使用できるため、すべての出力がSTDOUTに移動し、STDERが開いたファイルに移動します。
所属していません StackOverflow