可能性が非常に低いことは知っていますが、nohupされたプロセスが最近何を出力しているかを確認する方法はありますか?
このプロセスはまだ開いていますが、すべての出力を/ dev/nullにリダイレクトして実行しました。
したがって、そのようなプロセスをコンソールに戻す方法はありますか、それとも絶望的ですか:(
乾杯
可能性が非常に低いことは知っていますが、nohupされたプロセスが最近何を出力しているかを確認する方法はありますか?
このプロセスはまだ開いていますが、すべての出力を/ dev/nullにリダイレクトして実行しました。
したがって、そのようなプロセスをコンソールに戻す方法はありますか、それとも絶望的ですか:(
乾杯
方法はありますが、簡単ではありません。トリックはdup2を使用することであり、プログラムがlibcに対してリンクされているという事実に依存します(すべてのc / c ++アプリケーションはリンクされますが、Javaアプリケーションはリンクされません。 )。
gdbプロンプトで次を実行して、stdoutを/ tmp/newfileにリダイレクトします
$ print dup2(open( "/ tmp / newfile"、0)、1)
次を実行して、stderrを/ tmp/newfileにリダイレクトします
$ print dup2(open( "/ tmp / newfile"、0)、2)
dup2が行うことは
ファイル記述子の複製これは、stdout / stderr(1と2)と、openから返された新しいファイル記述子の両方を交換可能に使用できることを意味します。これにより、stdoutとstderrに送られるすべての出力が開いたファイルに送られます。