화면에서 프로그램을 실행 중입니다. 실제로 세션에서 분리하여 netstat를 확인하면 프로그램이 여전히 실행 중임을 알 수 있습니다 (원하는 것).
udp 0 0 127.0.0.1:1720 0.0.0.0:* 3759/ruby
이제 해당 프로세스를 실행하는 세션에 다시 연결하고 싶습니다. 새 터미널을 시작하고 screen -r을 입력합니다
$ screen -r
There are several suitable screens on:
5169.pts-2.teamviggy (05/31/2013 09:30:28 PM) (Detached)
4872.pts-2.teamviggy (05/31/2013 09:25:30 PM) (Detached)
4572.pts-2.teamviggy (05/31/2013 09:07:17 PM) (Detached)
4073.pts-2.teamviggy (05/31/2013 08:50:54 PM) (Detached)
3600.pts-2.teamviggy (05/31/2013 08:40:14 PM) (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
그러나 내가 만든 프로세스를 실행하는 세션이 무엇인지 어떻게 알 수 있습니까?
이제 내가 만난 문서 중 하나가 말했습니다.
“창을 사용할 때 Ca A를 입력하여 이름을 지정하십시오.이 이름은 창 목록에 사용되며 많은 창을 사용할 때 각 창에서 수행중인 작업을 기억하는 데 도움이됩니다. “
문제는 새로운 화면 세션에있을 때 control + a A를 눌러도 아무 일도 일어나지 않습니다.
답변
여기에는 두 가지 레벨의 “목록”이 있습니다. 먼저, 개별 세션 내에 ctrl-A A가있는 “창 목록”이 있고, 두 번째로 질문에 붙여 넣은 항목과 “세션 목록”이 있습니다 screen -ls
.
-S
매개 변수를 사용하여 세션 이름을 사용자 정의 할 수 있습니다. 그렇지 않으면 호스트 이름 (teamviggy)을 사용합니다.
$ screen
(분리하려면 Ctrl-A d)
$ screen -S myprogramrunningunderscreen
(분리하려면 Ctrl-A d)
$ screen -ls
There are screens on:
4964.myprogramrunningunderscreen (05/31/2013 09:42:29 PM) (Detached)
4874.pts-1.creeper (05/31/2013 09:39:12 PM) (Detached)
2 Sockets in /var/run/screen/S-paul.
보너스로 -S
나중에 다시 연결하기 위해 전달하는 이름의 명확한 약어를 사용할 수 있습니다 .
screen -r myprog
( myprogramrunningunderscreen
세션에 다시 연결되었습니다 )
답변
screen -r
다시 연결하지 못한 경우가있었습니다 . 다음 -d
과 같이 플래그를 추가
screen -d -r
나를 위해 일했다. 이전 화면을 분리하고 다시 연결할 수있었습니다. 자세한 내용은 매뉴얼 페이지를 참조하십시오.
답변
쉬운 방법은 단순히 임의의 화면에 다시 연결하는 것입니다.
screen -r
그런 다음 화면을 실행하면 타격 Ctrl-A "
(예 : control-A와 큰 따옴표) 을 눌러 모든 활성 화면의 목록을 얻을 수 있습니다 . 그런 다음 활성 화면을 한 번에 하나씩 선택하여 실행중인 화면을 확인할 수 있습니다. 물론 화면 이름을 지정하면 올바른 화면을 쉽게 식별 할 수 있습니다.
내 두 센트
답변
여러 클러스터의 여러 컴퓨터에서 작업 해야하는 다음 콤보를 사용하는 경향이 있습니다.
screen -S clusterX
그러면 환경을 구축 할 수있는 새 화면 세션이 만들어집니다.
screen -dRR clusterX
이것이 나중에 해당 화면 세션에 다시 연결하는 데 사용하는 것입니다. 멋진 부분은 세션이 다른 곳에 연결되면 다른 디스플레이를 분리한다는 것입니다. 또한 누군가 모르게 내 서버를 재부팅 한 것처럼 기발한 이유로 세션이 없으면 세션을 만듭니다. 드디어. 여러 세션이 존재하면 첫 번째 세션을 사용합니다.
이 팁에 대한 https://support.dvsus.com/hc/en-us/articles/212925186-Linux-GNU-Screen-instructions에 대한 많은 찬사가 있습니다 .
편집하다:
또한 man screen
암호 매개 변수에 대한 유용한 설명이 몇 가지 있습니다.
-d -r Reattach a session and if necessary detach it first.
-d -R Reattach a session and if necessary detach or even create it
first.
-d -RR Reattach a session and if necessary detach or create it. Use
the first session if more than one session is available.
-D -r Reattach a session. If necessary detach and logout remotely
first.
더 많은 -D
것이 있으므로 확인하십시오man screen
답변
의 출력 screen -list
형식은 다음과 같습니다 pid.tty.host
. pid는 다음을 사용하여 첫 번째 자식 프로세스를 얻는 데 사용할 수 있습니다 pstree
.
screen -list|cut -f1 -d'.'|cut -f2|xargs -n 1 pstree -p|grep "^screen"
당신은 이와 같은 목록을 얻을 것입니다
screen(5169)---zsh(5170)---less(15268)
screen(4872)---zsh(4873)-+-cat(11364)
...
답변
screen -d -r 4964
또는
screen -d -r 4874
$ screen -ls
There are screens on:
4964.myprogramrunningunderscreen (05/31/2013 09:42:29 PM) (Detached)
4874.pts-1.creeper (05/31/2013 09:39:12 PM) (Detached)
2 Sockets in /var/run/screen/S-paul.