2

ユーザー「remedy」によって開始された、現在実行中のプロセス (arserverd) があります。このユーザーとしてログインできます。プロセスを再起動せずに stderr と stdout をキャプチャしたいと思います。これは可能ですか?

4

2 に答える 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に固有のものです。straceLinuxシステムでは、代わりに探してください。

トラスは、トラスしているプロセスをいくらか遅くするので、常に使用したいものではありません。永続的な解決策を探している場合、最善の策は、プログラムの起動時にstdoutとstderrをファイルにリダイレクトすることです。ファイルのサイズを管理しやすくするために、定期的にファイルを切り捨てることができます。screen別の方法は、プログラムを操作したいときに再接続できるセッション内でプログラムを実行することです。

于 2009-10-09T20:59:03.707 に答える
0

私はそうは思いませんが/proc/PID/fd/1、stdout と/proc/PID/fd/2stderr (PIDプロセスの PID に置き換えてください) を読み取ることができます。

于 2009-10-08T08:57:34.847 に答える