집에 가기 전에 시작해야 할 프로세스가 오래 실행되기 때문에 프로세스를 시작하기 위해 서버에 SSH 세션을 만들지 만 랩톱을 닫고 집에 가서 저녁 식사 후 나중에 가고 싶습니다. 퇴근 전에 시작한 과정을 확인하십시오. SSH로 어떻게 할 수 있습니까? 내 이해는 SSH 연결을 끊으면 서버에서 로그인 세션도 중단되므로 장기 실행 프로세스가 중단된다는 것입니다.
집에 가기 전에 시작해야 할 프로세스가 오래 실행되기 때문에 프로세스를 시작하기 위해 서버에 SSH 세션을 만들지 만 랩톱을 닫고 집에 가서 저녁 식사 후 나중에 가고 싶습니다. 퇴근 전에 시작한 과정을 확인하십시오. SSH로 어떻게 할 수 있습니까? 내 이해는 SSH 연결을 끊으면 서버에서 로그인 세션도 중단되므로 장기 실행 프로세스가 중단된다는 것입니다.
답변:
nohup
프로세스가 행업 신호를 무시하도록하는 데 사용하십시오 .
$ nohup long-running-process &
$ exit
nohup
SIGHUP을 가로 채서 실행 된 쉘이 종료되고 SIGHUP을 여전히 실행중인 모든 자식에게 보내면 long-running-process
죽지 않습니다. disown
Bash의 자식 목록에서 지정된 작업을 제거하기 만하면 SIGHUP을 전혀 보내려고하지 않습니다. nohup
쉘과 분리 된 프로그램이므로 모든 쉘과 작동하지만 disown
Bash 내장 프로그램입니다. 작업을 시작한 후에 만 작업 nohup
을 실행 disown
하고 셸로 돌아갈 수 있도록 백그라운드 에서 실행되도록 명령을 실행할 수 있습니다.
tail -f nohup.out
돌아 왔을 때 무슨 일이 일어나고 있는지 확인합니다.
GNU Screen을 사용하고 싶습니다. 정말 대단해!
ssh me@myserver.com
screen #start a screen session
run-a-long-process
CTRL+ a, d화면 세션에서 분리
exit #disconnect from the server, while run-a-long-process continues
랩톱으로 돌아올 때 :
ssh me@myserver.com
screen -r #resume the screen session
그런 다음 장기 실행 프로세스의 진행 상황을 확인하십시오!
screen
매우 포괄적 인 도구이며 내가 설명한 것보다 더 많은 것을 할 수 있습니다. 스크린 세션 중에 ctrl + a? 몇 가지 일반적인 명령을 배울 수 있습니다. 아마도 가장 일반적인 것은 다음과 같습니다.
screen -d -r
다른 셸을 화면 세션에 연결 한 경우 현재 시스템에서 다시 시작하기 전에 분리 할 수 있도록 다시 시작합니다.screen -S name
만들고 다른 친구가에 연결하십시오 screen -x name
.
tmux
with tmuxinator
는 멋진 설정을위한 훌륭한 조합이며 screen
, 빠르고 간단한 솔루션으로 선호 합니다.
미리 계획하고 설정 screen
하지 않은 경우 다음을 수행하십시오.
프로세스가 백그라운드에서 실행중인 경우 : # 3으로 이동하고 그렇지 않으면 : Ctrl-Z
포 그라운드 프로세스를 일시 중단합니다. 정지 된 프로세스의 작업 번호를보고합니다. 예를 들면 다음과 같습니다.
[1]+ Stopped processName
(# 다음에 오는 작업을 사용하여)을 processName
배경으로 보냅니다 . 백그라운드에서 다시 시작 됩니다.bg %1
%
processName
부인 processName
와 disown %1
나 disown PID
. -h
현재 쉘을 종료 할 때까지 소유권을 유지 하려면 플래그를 사용하십시오 .
&
시작했고 그것을 시작할 때 사용하지 않았기 때문에 그것을 계속 유지할 수 없을 것이라고 생각 했다. 이것은 잘 작동하는 것 같습니다!
사용하려는 것은 화면 또는 byobu라는 화면 주위의 사용자 친화적 인 래퍼입니다.
Screen을 사용하면 동일한 ssh 세션에서 여러 가상 터미널 세션을 실행할 수 있습니다. 자습서 및 도움말 페이지를 사용할 수 있습니다.
byobu 는 ctrl-a의 키 조합 대신 간단한 기능 키를 사용하여 새 화면을 쉽게 열 수있는 래퍼입니다. 또한 이름을 지정할 수있는 모든 열린 가상 터미널이있는 상태 표시 줄도 보여줍니다.
또 다른 좋은 기능은 ssh 연결이 끊긴 동안 모든 화면을 유지할 수 있다는 것입니다. ssh를 통해 다시 연결하고 byobu를 호출하면 모든 것이 이전과 같습니다.
마지막 으로 byobu의 일부 스크린 샷 .
오래된 질문, 이상한 여전히 아무도 ntms 의 래퍼 역할을하고 필요할 때까지 열어 두는 tmux를 조언하지 않았습니다 . 이것은 tmux가 가지고있는 많은 기능 외에 더 많은 제어를 허용합니다. 관리하기 쉽고, tmux를 실행하기 만하면 셸에서 쉘을 가져 와서 작업을 시작한 다음 ctrl + b와 d (detach) ctrl+b
를 차례로 누름 (tmux의 "ok google"이며 닫는 d
명령입니다) 쉘에서 나가지 않고). 예를 들어 퍼티를 닫으면 실제로 작동합니다. 저녁 식사 후 다시 연결하면 tmux를 다시 열어 tmux attach
화면을 그대로 그대로 볼 수 있습니다. 내가 좋아하는 것이 분할 창입니다. ctrl+b
그런 다음을 누릅니다 "
. 한 창에서 다른 창으로 변경 한 ctrl+b
다음 위 / 아래 화살표를 누릅니다.
좋은 가이드는 여기에서 찾을 수 있습니다. 연결을 끊을 때 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즉시 연속을
<kbd>Ctrl</kbd>
이름을 키보드 키로 표시하는 데 사용할 수 있습니다 .
나는 NX NoMachine을 사용하는데, 이는 나뿐이기 때문에 무료입니다. 기본적으로 서버에서 X 세션을 실행하여 연결하거나 연결을 끊을 수 있습니다. 연결되어 있지 않아도 X 세션은 계속 실행됩니다. 어디에서나 연결할 수 있습니다. 플로팅 창 또는 전체 데스크탑 (예 : 완전한 Gnome 데스크탑)을 포함하는 단일 창 중에서 선택할 수 있습니다. 클라이언트 (노트북에서 실행할)는 Linux, MacOS, Solaris 또는 Microsoft Windows에서 실행할 수 있습니다. 후자의 경우 부동 창을 선택하면 Windows 작업 표시 줄에 개별적으로 나타납니다.
NX Nomachine을 사용하는 두 Linux 서버의 프런트 엔드로 Windows XP 랩톱 (필요한 특정 Windows 관련 하드웨어에 필요)을 사용합니다. Linux에서 Windows 랩톱에 연결된 프린터로 인쇄 할 수도 있습니다.