実行中のプロセスを盗み、再接続します。

実行中のプロセスを盗み、再接続します。

日曜日にオフィスに実行中のRインスタンスを残しました。スクリプトの実行が完了したら、オフィスに行かずにワークスペースを保存したいと思います。コンピュータにSSHで接続できますが、まだ画面にプログラムが実行されていません。

sshを介してプロセスを拒否し(プログラムが実行されている端末のjobsidにアクセスできません!)、reptyrで再接続する方法はありますか? reptyr と reptyr -T は、まずプロセスを拒否しないと動作しません。

28845 3diag       20   0  139.3m  10.4m   0.0  0.1   0:12.06 S  `- urxvtd                                                                                      
 5327 3diag       20   0   16.4m   4.6m   0.0  0.1   0:00.02 S      `- bash                                                                                    
 5335 3diag       20   0 3499.3m 3.244g   0.0 43.3 171:57.89 S          `- R 

私の問題のユニークな部分は、プログラムが生成された端末にアクセスせずにプログラムを分離するように明示的に要求することです。

ベストアンサー1

呼び出しはreptyr端末を分離するのに十分ですが、

sudo reptyr -T $PID

からman reptyr

-ティー

別の追加モード、「TTY Stealing」を使用してください。

このモードでは、 reptyr はターゲットプロセスを ptrace(2) しませんが、プロセス pty のターミナルエミュレータを検索し、pty のマスター側を盗もうとします。

このモードは多くの場合、より信頼性が高く柔軟性があります(たとえば、単一のプロセスだけでなく、すべてのプロセスをttyに接続できます)。

ただし、欠点として、sshd(8)の子は、reptyrがrootとして実行されていない限り、-Tを介して接続できません。バラより⟨https://blog.nelhage.com/2014/08/new-reptyr-feature-tty-stealing/ ttyを盗むことの詳細を学んでください。

おすすめ記事