화면을 다시 시작할 수 없습니다. 이미 연결되어 있다고 나옵니다.

화면을 다시 시작할 수 없습니다. 이미 연결되어 있다고 나옵니다.

저는 원격 Debian Jessie 서버에서 작업하고 있습니다. 스크린 세션을 시작하고 스크립트 실행을 시작한 후 네트워크 시간 초과로 인해 연결이 끊어졌습니다.

이제 다시 로그인하여 세션을 재개하고 싶습니다.

화면을 나열할 때 표시되는 내용은 다음과 같습니다.

$ screen -ls
There are screens on:
    30608.pts-8.myserver    (11/03/2015 08:47:58 AM)    (Attached)
    21168.pts-0.myserver    (11/03/2015 05:29:24 AM)    (Attached)
    7006.pts-4.myserver (10/23/2015 09:05:45 AM)    (Detached)
    18228.pts-4.myserver    (10/21/2015 07:50:49 AM)    (Detached)
    17849.pts-0.myserver    (10/21/2015 07:43:53 AM)    (Detached)
5 Sockets in /var/run/screen/S-me.

두 화면이 동시에 붙어있는 것 같아요.

이제 이전에 실행 중이던 세션을 재개하여 스크립트 결과를 확인하겠습니다.

$ screen -r 30608.pts-8.myserver
There is a screen on:
    30608.pts-8.OpenPrescribing (11/03/2015 08:47:58 AM)    (Attached)
There is no screen to be resumed matching 30608.pts-8.myserver.

왜 다시 연결할 수 없나요?

다른 화면에서도 동일한 문제가 있습니다.

$ screen -r 21168.pts-0.myserver
There is a screen on:
    21168.pts-0.OpenPrescribing (11/03/2015 05:29:24 AM)    (Attached)
There is no screen to be resumed matching 21168.pts-0.myserver.

답변1

세션이 여전히 다른 터미널에 연결되어 있습니다. 서버는 해당 연결에서 네트워크 중단을 감지하지 못했습니다. 패킷을 보내려고 시도하고 오류가 반환되거나 시간 초과 후 응답이 없을 때만 중단을 감지하지만 아직 이런 일이 발생하지 않았습니다. 클라이언트가 일부 입력을 보내려고 시도했지만 실패했기 때문에 중단을 감지했지만 서버는 입력을 기다리고 있는 일반적인 상황에 있습니다. 결국 서버는 keepalive 패킷을 보내고 연결이 끊어졌음을 감지합니다.

그 동안에는 -d옵션을 사용하여 스크린 세션이 있는 터미널에서 스크린 세션을 분리하세요.

screen -r -d 30608

screen -rd기존 스크린 세션에 연결하는 표준 방법입니다.

답변2

에 따르면수동당신은 "재개"만 할 수 있습니다떨어져 있는스크린:

'-ls [성냥]'
'-list [성냥]'
화면을 시작하지 않고 대신 세션 식별 문자열 목록을 인쇄합니다(보통 pid.tty.host 형식, 세션 이름 참조).'분리됨'으로 표시된 세션은 다음을 통해 재개할 수 있습니다.screen -r. '첨부됨'으로 표시된 항목은 실행 중이며 제어 터미널이 있습니다. 세션이 다중 사용자 모드에서 실행되면 '다중'으로 표시됩니다. '접근 불가능'으로 표시된 세션은 다른 호스트에 있거나 작동하지 않습니다. 연결할 수 없는 세션은 해당 이름이 로컬 호스트의 이름이나 지정된 매개변수(있는 경우)와 일치하는 경우 죽은 것으로 간주됩니다. -r일치 항목을 구성하는 방법에 대한 설명은 플래그를 참조하세요 . '죽음'으로 표시된 세션을 철저히 확인하고 제거해야 합니다. 확실하지 않은 경우 시스템 관리자에게 문의하십시오. ' -wipe' 옵션을 사용하여 세션을 제거합니다.

원하는 것은 이 옵션입니다.

'-x'
이미 다른 곳에 연결되어 있는 세션에 연결합니다(다중 디스플레이 모드). 화면이 자체 내부에서 부착되는 것을 거부합니다. 그러나 여러 화면을 계단식으로 연결하면 루프가 감지되지 않습니다. 잘 지내세요.

답변3

screen옵션을 사용하여 연결합니다 -rD.

설명서를 참조하세요:

-D -r
Reattach a session. If necessary detach and logout remotely first. 

답변4

내가 아는 두 가지 방법이 있습니다.

  1. screen -rd <screen_name/id>

이렇게 하면 화면이 분리되었다가 다시 연결됩니다. 사전 연결된 사용자의 화면이 닫힙니다.

  1. screen -x <스크린_이름/ID>

그러면 연결된 사용자를 종료하지 않고 화면에 직접 연결됩니다. 이는 주로 다중 사용자 디스플레이에 사용됩니다.

관련 정보