GNU 화면-연결이 끊긴 후 화면에 다시 연결할 수 없습니다 더 이상 해당 화면에 연결할 수 없습니다.

화면에서 irssi를 사용하고 있었지만 연결이 끊어졌습니다. 서버에 다시 접속 한 후에는 더 이상 해당 화면에 연결할 수 없습니다. screen -ls는 화면이 이미 연결되었음을 나타냅니다.

화면 -D 를 강제로 분리 하려고 시도했지만 분리가 발생했지만 screen -ls는 여전히 연결되어 있다고 말합니다. screen -x를 시도했는데 거기에 중단됩니다.

[sub@server ~]$ screen -ls
There are screens on:
 4033.poe (Detached)
 7728.irssi (Attached)
2 Sockets in /var/run/screen/S-sub.

내가 지금 무엇을 할 수 있을까?



답변

‘Attached (연결됨)’화면을 연결하려는 경우을 실행하십시오 screen -xr irssi. 대문자 ‘-X’는 화면 세션 중 하나에 명령을 보내고, 소문자 ‘-x’옵션을 사용하면 연결된 세션에 다시 연결할 수 있습니다. 그러나 세션 이름이 둘 이상 있으므로 여전히 세션 이름을 지정해야합니다.


답변

스크린 세션을 시작한 을 종료 하여 과거에이 동작을 해결했습니다 . 기본적으로 화면에서 소유 하지 않은 사용자의 모든 배쉬 인스턴스를 종료 합니다.


답변

기본 이름이 아닌 이름을 지정했습니다. 이 시도:screen -RD irssi


답변

당신은 시도 할 수 있습니다:

#Reattach a session and if necessary detach it first.
screen -d -r 7728.irssi

#Reattach a session. If necessary detach and logout remotely first.
screen -D -r 7728.irssi

항상 전체 이름을 사용하는 것이 좋습니다 pid.tty


답변

screen버전간에 이전 버전과 호환되지 않는 것으로 알려져 있습니다. 서버에서 버전 screen이 업데이트 된 경우 더 이상 이전 화면 세션에 다시 연결하지 못할 수 있습니다.

이 경우 이전 SCREEN 바이너리를 사용하여 다시 배포하거나 (배포 패키지 관리자가 저장 한 경우) 세션을 완전히 종료 할 수 있습니다.


답변

GNU / 스크린 프로세스에 SIGCHLD (창을 닫을 때 일반적으로 수신 됨)를 보내서 성공하면 소켓 파일을 만지거나 다시 만들 수 있습니다.

또한 screen경우에만 다른 두 가지 실행 파일 을 호출하는 두 가지 방법이 있습니다 . SCREEN다시 연결하려는 서버 측 구성 요소 screen이고 터미널과 서버 측 사이에서 데이터를 섞는 클라이언트 측입니다. 따라서 소문자 버전을 죽이려고 할 수 있습니다 …

예를 들어 다음에서 내 프로세스 screenSCREEN프로세스가 부모 및 자식으로 간주되지 않아 기존 세션에 연결되었음을 나타냅니다.

# ps fao pid,command
25070 SCREEN -U
25071  \_ vim +let &t_Co=256
25073  \_ -bash
25077  \_ -bash
...
18364  \_ sshd: username [priv]
18366  |   \_ sshd: username@pts/17
18367  |       \_ -bash
  870  |           \_ screen -U -x

새로운 세션은 다음과 같습니다.

19645  |  \_ screen -S MySession
19646  |      \_ SCREEN -S MySession
19647  |          \_ bash
 1485  |          |   \_ python
19700  |          \_ bash


답변

세션이 멈추고 연결을 끊은 vi를 사용하는 동안 이런 일이 발생했습니다. screen -Arx를 사용하여 화면에 다시 연결하려고하면 프로세스가 중단됩니다.

비슷한 하위 프로세스가 실행되어 화면이 중단 될 수 있습니다. 특히 그것에 중점을 두는 경우 화면에서 실행중인 하위 프로세스 목록을 얻으려면 다음을 수행하십시오.

ps ux -H

중첩 된 자식 프로세스가 표시됩니다.

zwood    28481  0.0  0.0 101148  8844 ?        Ss   Oct07   1:36 SCREEN -S mysession
zwood    28482  0.0  0.0  67436  1744 pts/2    Ss+  Oct07   0:00   /bin/bash
zwood    28515  0.0  0.0  67556  1876 pts/4    Ss+  Oct07   0:00   /bin/bash
zwood     4498  0.0  0.0  67436  1772 pts/5    Ss   Oct07   0:00   /bin/bash
zwood     2007  0.0  0.0  73604  1324 pts/5    S+   15:47   0:00     vi /home/zwood/.bashrc.custom
zwood    14670  0.0  0.0  67436  1768 pts/13   Ss+  Oct14   0:00   /bin/bash
zwood    27002  0.0  0.0  67436  1720 pts/11   Ss+  Oct20   0:00   /bin/bash
zwood    24748  0.0  0.0  67432  1712 pts/14   Ss+  Oct21   0:00   /bin/bash

처음에 문제를 일으킨 vi 프로세스를 종료 한 후 아무 문제없이 화면을 다시 연결할 수있었습니다. 화면에 다시 연결된 이전 프로세스를 종료하는 것도 좋은 생각입니다. 그냥 사용하십시오 :

kill -9 <pid>

내부에서 어떤 화면이 작동하는지, 왜 vi가 화면을 멈추게했는지, vi 프로세스를 종료하면 화면이 다시 나타나는 이유를 모르겠습니다. 나는 과거에 스크린 에서이 문제에 부딪 쳤고 대부분의 사람들 이이 스레드에서 권장하지 않는 것을 운없이 시도했습니다. 이 문제를 찾는 것은 자식 프로세스가 나를 위해 일한 유일한 일입니다.