it-swarm-ko.tech

SSH 세션 연결이 끊긴 후에 프로세스를 계속 실행

집에 가기 전에 시작해야 할 프로세스가 오래 실행되기 때문에 프로세스를 시작하기 위해 서버에 SSH 세션을 만들지 만 랩톱을 닫고 집에 가서 저녁 식사 후 나중에 가고 싶습니다. 퇴근 전에 시작한 과정을 확인하십시오. SSH로 어떻게 할 수 있습니까? 내 이해는 SSH 연결을 끊으면 서버에서 로그인 세션도 중단되므로 장기 실행 프로세스가 중단된다는 것입니다.

216
λ Jonas Gorauskas

프로세스가 중단 신호를 무시하도록하려면 Nohup를 사용하십시오.

$ Nohup long-running-process &
$ exit
217
Warren Young

GNU Screen을 사용하고 싶습니다. 정말 대단합니다!

ssh [email protected]
screen               #start a screen session
run-a-long-process

CTRL+a , d 화면 세션에서 분리

exit                 #disconnect from the server, while run-a-long-process continues

랩톱으로 돌아올 때 :

ssh [email protected]
screen -r            #resume the screen session

그런 다음 장기 실행 프로세스의 진행 상황을 확인하십시오!

screen는 매우 포괄적 인 도구이며 내가 설명한 것보다 더 많은 것을 할 수 있습니다. 스크린 세션 중에 ctrl + a? 몇 가지 일반적인 명령을 배울 수 있습니다. 아마도 가장 일반적인 것은 다음과 같습니다.

  • CTRL+a , c 새 창을 만들려면
  • CTRL+a , n 화면 세션에서 다음 창으로 전환
  • CTRL+a , p 화면 세션에서 이전 창으로 전환
  • 여러 시스템에서 로그인하면 실수로 다른 컴퓨터의 활성 화면 세션에 연결되어있을 수 있습니다. 이런 이유로 항상 screen -d -r 다른 셸이 내 스크린 세션에 연결되어 있는지 확인하려면 현재 시스템에서 셸을 다시 시작하기 전에 분리해야합니다.
143
Sandy

미리 계획하지 않고 screen 등을 설정 한 경우 다음을 수행하십시오.

  1. 프로세스가 백그라운드에서 실행중인 경우 : goto # 3, 그렇지 않으면 Ctrl-Z 포 그라운드 프로세스를 일시 중단합니다. 정지 된 프로세스의 작업 번호를보고합니다. 예를 들면 다음과 같습니다.

    [1]+  Stopped                 processName
    
  2. bg %1 뒤에있는 작업 #을 사용하여 %을 사용하여 processName를 배경으로 보냅니다. 백그라운드에서 processName이 (가) 다시 시작됩니다.

  3. DisownprocessName with disown %1 또는 disown PID. 현재 쉘을 종료 할 때까지 소유권을 유지하려면 -h 플래그를 사용하십시오.

42
Mike Covington

사용하려는 것은 화면 또는 byobu라는 화면 주위의 사용자 친화적 인 래퍼입니다.

Screen을 사용하면 동일한 ssh 세션에서 여러 가상 터미널 세션을 실행할 수 있습니다. tutorialhelp pages 를 사용할 수 있습니다.

byob 는 ctrl-a의 키 조합 대신 간단한 기능 키를 사용하여 새 화면을 쉽게 열 수있는 래퍼입니다. 또한 이름을 지정할 수있는 모든 열린 가상 터미널이있는 상태 표시 줄도 보여줍니다.

또 다른 멋진 기능은 ssh 연결이 끊긴 동안 모든 화면을 유지할 수 있다는 것입니다. ssh를 통해 다시 연결하고 byobu를 호출하면 모든 것이 이전과 같습니다.

마지막으로 byobu의 screenshots .

15
txwikinger

주목할 가치가있을 것입니다

ssh -t lala screen -rxU moo는 호스트의 moo 세션에 연결합니다 lala

ssh -t lala screen -S moo는 호스트에서 moo 세션을 생성합니다 lala

ssh -t lala screen -S moo quux는 호스트에서 moo 세션을 생성하고 lala 프로그램을 quux 프로그램을 실행하여 완료시 세션을 종료합니다.

9
cjac

좋은 안내서를 찾을 수 있습니다 :연결을 끊을 때 SSH 세션을 계속 실행하십시오

Sudo apt-get install screen

이제 명령 행에 screen을 입력하여 새 화면 세션을 시작할 수 있습니다. 화면에 대한 정보가 표시됩니다. Enter 키를 누르면 정상적인 프롬프트가 표시됩니다.

연결을 끊으려면 (그러나 세션을 계속 실행하십시오 적중 Ctrl + A 그리고 Ctrl + D 즉시 연속적으로. [분리됨] 메시지가 표시됩니다

이미 실행중인 세션에 다시 연결하려면

screen -r

기존 세션에 다시 연결하거나 존재하지 않는 경우 새 세션을 만들려면

screen -D -r

실행중인 화면 세션 내에 새 창을 만들려면 적중 Ctrl + A 그리고 C 즉시 연속적으로. 새로운 프롬프트가 나타납니다.

한 화면에서 다른 화면으로 전환하려면 적중 Ctrl + A 그리고 Ctrl + A 즉시 연속적으로.

열린 화면 창을 나열하려면 적중 Ctrl + A 그리고 W 즉시 연속적으로

4

오래된 질문, 이상한 여전히 아무도 조언하지 않았다 tmux , n 콘솔의 래퍼 역할을하고 필요할 때까지 열어 둡니다. 이것은 tmux가 가지고있는 많은 기능 외에 더 많은 제어를 허용합니다. 관리하기 쉽고, tmux를 실행하기 만하면 셸에서 쉘을 가져 와서 작업을 시작한 다음 ctrl + b를 누른 다음 d (분리) (ctrl+b는 tmux의 "ok google"이며 d는 셸을 종료하지 않고 닫는 명령입니다. 예를 들어 PuTTY와 같이 닫으면 실제로 작동합니다. 저녁 식사 후 다시 연결하면 tmux attach 화면을 그대로 그대로 표시합니다. 내가 좋아하는 것은 분할 창입니다 : ctrl+b를 누른 다음 ". 한 창에서 다른 창으로 변경하려면 ctrl+b를 누른 다음 위/아래 화살표를 누릅니다.

4
nnsense

나는 NX NoMachine을 사용하는데, 이는 나뿐이기 때문에 무료입니다. 기본적으로 서버에서 X 세션을 실행하여 연결하거나 연결을 끊을 수 있습니다. 연결되지 않은 경우 X 세션이 계속 실행됩니다. 어디에서나 연결할 수 있습니다. 플로팅 창 또는 전체 데스크탑 (예 : 완전한 Gnome 데스크탑)을 포함하는 단일 창 중에서 선택할 수 있습니다. 클라이언트 (노트북에서 실행할)는 Linux, MacOS, Solaris 또는 Microsoft Windows에서 실행할 수 있습니다. 후자의 경우 부동 창을 선택하면 Windows 작업 표시 줄에 개별적으로 나타납니다.

NX Nomachine을 사용하는 두 Linux 서버의 프런트 엔드로 Windows XP 랩톱 (특정 Windows 특정 하드웨어에 필요)이 필요)을 사용합니다. 리눅스에서 내 Windows 노트북.

2
Rob_before_edits

Tmux 는 백그라운드에서 장기 실행 프로세스를 실행하는 데 사용할 수있는 좋은 옵션입니다.

Google 클라우드 플랫폼의 VM 인스턴스/서버 (OS : Ubuntu 16.0))에서 장기 실행 프로세스를 계속 실행해야합니다. SSH 터미널을 시작해야하는 경우 터미널에서 프로세스를 실행하기 위해 터미널을 연결 상태로 유지하십시오. 이제까지는 모두 좋습니다.하지만 SSH 터미널과의 연결이 종료되면 대기 프로세스가 즉시 중지되므로 다시 한 번 다시 실행해야합니다. ssh 터미널이 다시 시작되거나 새 ssh 터미널에서 시작되었습니다.

tmux는 터미널을 닫은 후에도 실행하려는 프로세스가 종료되지 않도록하는 좋은 솔루션입니다.

터미널 멀티플렉서 (tmux)는 tmux 세션을 시작합니다.

  1. Ssh 터미널을 시작하십시오
  2. tmux를 입력하십시오. 동일한 터미널에서 창이 열립니다.
  3. 명령을 실행하여 tmux 세션에서 장기 실행 프로세스를 시작하십시오.

이제 SSH 터미널이 갑자기 닫히거나 종료 되더라도 tmux 세션은 인스턴스/서버에서 시작된 비 실행 프로세스를 계속 실행합니다.

연결이 종료 된 경우 다시 연결하는 방법은 백그라운드에서 tmux 세션에서 실행중인 프로세스를 확인하는 방법입니다.

  1. 새 ssh 터미널을 다시 연결하거나 엽니 다. 백그라운드에서 계속 실행중인이 프로세스를 보려면 tmux attach 명령.

Tmux 세션을 종료하고 싶습니다 :

  1. 프로세스를 중지하십시오. 그런 다음 tmux-terminal-window에 exit를 입력하십시오.

(참고 : tmux detach 명령 : tmux 세션을 종료/중지하지 않고 tmux 세션 창/터미널에서 종료됩니다)

자세한 내용은 다음 기사를 참조하십시오.

  1. https://www.tecmint.com/keep-remote-ssh-sessions-running-after-disconnection/
  2. https://limitlessdatascience.wordpress.com/2019/08/22/tmux-to-keep-jupyter-notebook-running-in-the-background/
1
Yogesh