ユーザー「remedy」によって開始された、現在実行中のプロセス (arserverd) があります。このユーザーとしてログインできます。プロセスを再起動せずに stderr と stdout をキャプチャしたいと思います。これは可能ですか?
2624 次
2 に答える
4
プロセスがすでに実行されている場合は、truss
コマンドを使用してファイル記述子1または2への書き込みをインターセプトできます。
truss -w 1,2 -p pid_of_arserverd
トラスは次のような行を出力します
write(1, " m e s s a g e\n", 8) = 8
トラスはSolarisに固有のものです。strace
Linuxシステムでは、代わりに探してください。
トラスは、トラスしているプロセスをいくらか遅くするので、常に使用したいものではありません。永続的な解決策を探している場合、最善の策は、プログラムの起動時にstdoutとstderrをファイルにリダイレクトすることです。ファイルのサイズを管理しやすくするために、定期的にファイルを切り捨てることができます。screen
別の方法は、プログラムを操作したいときに再接続できるセッション内でプログラムを実行することです。
于 2009-10-09T20:59:03.707 に答える
0
私はそうは思いませんが/proc/PID/fd/1
、stdout と/proc/PID/fd/2
stderr (PID
プロセスの PID に置き換えてください) を読み取ることができます。
于 2009-10-08T08:57:34.847 に答える