손상된 SSH 세션에 다시 연결할 수 없지만 SSH 내부에서 실행중인 프로세스 를 원하는대로 기능적으로 바꿀 수 있습니다.
명령
귀하의 경우 새로운 SSH 세션, 세션 등에서 apt-get
제어되도록 프로세스를 인수합니다 . 내가 가장 좋아하는 명령 은 다음과 같습니다.screen
reptyr
$ sudo apt-get install reptyr
$ ps ax | grep apt-get
10626 pts/8 R+ 0:32 apt-get upgrade
그런 다음 프로세스에서 찾은 pid로 :
$ sudo reptyr -T 10626
또는 그래도 작동하지 않으면 다음을 시도하십시오.
$ reptyr 10626
이 단계가 끝나면 모든 키보드 입력이 사용자가 인계 한 프로그램으로 이동합니다. 불행히도 apt-get
확인을 요청 하는 출력 과 같은 SSH 세션의 이전 출력은 표시되지 않습니다 .
설명
기본적으로와 동일한 방식으로 reptyr
(즉, ptrace
디버그 첨부 파일을 통해 ) 작동하는 다른 여러 도구가 있습니다. 다음과 같은 질문 및 답변을 참조하십시오.
상기 지침에서 reptyr 10626
사용 ptrace
그동안 첨부 디버그 sudo reptyr -T 10626
명령은 TTY 훔치는 사용하고 바람직한이다 ( 상세 ).
마지막으로, 당신이 있기 때문에이 방법이있는 SSH 세션을 통해 수행 할 수없는 이유 sshd
프로세스가 호스트 단자에 의해 제어되지 않는 대신 그것은 제공하는 A - 터미널의 슬레이브 일부 pts
장치 - 마스터 일부가에있는 제어하면서 클라이언트 시스템, 여기에 깨진 SSH 세션이 있습니다. 로 이러한 sshd
프로세스 를 강제로 인수하면 reptyr -s <pid>
키보드 입력이 활성 하위 프로세스가 아닌 해당 프로세스로 이동합니다. 따라서 "Ctrl + Z"는 간단하게 제거합니다 sshd
.
apt-get
프로세스가 여전히 실행중인 것에 놀랐습니다 . SSH까지 전체 프로세스 체인과 함께 죽었을 것입니다. 나는 / 세션do-dist-upgrade
에서 자동으로 시작 한다는 것을 알았습니다 . 어쩌면 어떤 상황에서는 동일합니까?screen
byobu
apt-get