일요일이고 사무실에 실행 중인 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 훔치기에 대해 자세히 알아보세요.