실행 중인 프로세스를 훔치고 다시 연결합니다.

실행 중인 프로세스를 훔치고 다시 연결합니다.

일요일이고 사무실에 실행 중인 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가 루트로 실행되지 않는 한 -T를 통해 연결할 수 없습니다. 바라보다⟨https://blog.nelhage.com/2014/08/new-reptyr-feature-tty-stealing/ tty 훔치기에 대해 자세히 알아보세요.

관련 정보