답변:
방법이 없지만 이것을 막기 위해 사용하는 것이 tmux
좋습니다. tmux를 시작하고 작업을 시작한 후 계속 진행합니다. 돌아가서 연결이 끊어진 것을 발견하면 다시 연결하고 입력하기 만하면됩니다 tmux attach
.
다음은 예입니다.
$ tmux
$ make <something big>
......
Connection fails for some reason
Reconect
$ tmux ls
0: 1 windows (created Tue Aug 23 12:39:52 2011) [103x30]
$ tmux attach -t 0
Back in the tmux sesion
tmux 및 screen에 대한 권장 사항은 모두 좋은 제안입니다. 그들은 귀하의 질문에 대한 답변을 암시하지만 실제로 진술하지는 않습니다. 질문에 대한 답은 방법이 없습니다. ssh를 통해 로그인하면 연결이 끊어지면 쉘이 종료됩니다. 해결 방법은 로그인하여 어떤 종류의 가상 터미널 (예 :)을 즉시 시작하는 것 tmux
입니다. 연결이 끊어지면 사용자의 쉘이 종료되지만 새 쉘을 열고 가상 터미널 (실제로 작업중인 쉘을 실행중인)에 다시 연결할 수 있습니다.
윌리엄이 말했듯이, 짧은 대답은 '아니요'입니다. 이를 방지하기 위해 연결을 끊기 전에 screen 명령을 사용할 수 있습니다
아니요, 연결을 끊은 후에는 셸을 복구 할 수 없습니다. 대신, 연결을 끊은 후에도 실행중인 명령이 계속 실행되도록해야합니다.
이를 위해 대부분의 쉘에 내장 된 명령 인 "nohup"및 "disown"명령을 사용하십시오. 즉, 아무것도 설치할 필요가 없습니다. 이것은 비 대화식 명령에서만 작동합니다.
따라서 단계는 다음과 같습니다.
서버로 돌아 왔을 때 "tail nohup.out"을 사용하여 명령이 어떻게 수행되는지 확인하십시오.
누군가가 답변 대신 의견에 reptyr을 추가하여 의견을 표명 할 수는 없지만 편집 된 질문에 대한 좋은 답변 인 것처럼 보이고 CentOS에서 훌륭하게 작동했습니다.
참조 : https://github.com/nelhage/reptyr https://www.ostechnix.com/reptyr-move-running-process-new-terminal/
다시 연결 한 후 중단 된 세션을 복구 할 수있는 방법이 있습니까?
편집 : yum으로 일부 업데이트 및 설치를 수행 중이며 프로세스가 진행중인 작업의 중간에 프로세스가 계속 중단되면 이것이 문제가 될 수 있습니다.
마찬가지로, yum 업데이트 세션에 대한 원격 연결이 끊어졌습니다. 그래서이 질문을 검색하고 발견했습니다 ... 이번에는 다시 연결하고 화면을 사용했습니다.
거기에서 나는 yum이 몇 시간 전에했던 회복 된 프롬프트에 있습니다.
기술적으로 대답은 모두 정확합니다. 이것은 정지 된 세션을 복구하는 것이 아니며 고아 프로세스를 현재 세션으로 다시 만드는 것입니다. 매우 유용합니다 ...
많은 사람들이 제안대로 screen
하고 tmux
, 그들이 모두 지원 기본 기능을하지만, 하나 하나가 모든 경우에 다른 뛰어난 것을 말할 수 있도록, 서로 다른 고유의 기능을 가지고 있습니다. 예를 들어, tmux 만 Window-splitting을 지원 하는 반면 GNU 화면 만 (Ctrl + ar)를 사용하여 긴 줄 바꿈 을 토글 할 수 있습니다 . 보다 자세한 비교는 여기를 참조 하십시오 .
ssh 의이 문제를 해결하기 위해 특별히 도구가 있습니다.
Autossh 는 ssh의 사본을 시작하고 모니터링하는 프로그램으로, 트래픽 이 없어지 거나 중지되는 경우 필요에 따라 다시 시작합니다. 아이디어는 rstunnel에서 온 것입니다.
Mosh 는 로밍을 허용하고 간헐적 인 연결을 지원하며 사용자 키 입력의 지능적인 로컬 에코 및 라인 편집 기능을 제공하는 원격 터미널 응용 프로그램입니다. Mosh는 SSH를 대체합니다. 특히 Wi-Fi, 셀룰러 및 장거리 링크를 통해 더욱 강력하고 반응이 좋습니다.
tmux
쉘을 사용하여 수행 할 수 있습니다 . 세션을 다시 연결하는 가장 빠른 방법은 연결이 끊어진 경우 다음과 같습니다.
tmux a #0
tmux
세션을 실행 하고 있다고 가정합니다 .
attach
로 a
."