나는 사용하고있다원격 로그인 자동 화면호스트에 SSH로 접속할 때 스크린 세션을 시작하는 스크립트입니다.
차이점링커 스크립트에서: 나는 사용하고 있습니다다루기 힘든RemoteLoginAutoScreen과 함께 사용됨세게 때리다
내가 겪고 있는 문제는 SSH 연결이 끊어지고(이런 일이 자주 발생하므로 자동 화면 구성이 발생함) 기존 화면 세션에 다시 연결하는 데 문제가 있다는 것입니다.
호스트 컴퓨터에서 내 화면 프로세스가 계속 실행 중이고 화면 소켓이 여전히 존재하는 것을 볼 수 있습니다.
$ ps auxww | grep -i screen | grep alexq
alexq 1818 0.0 0.0 103452 868 pts/19 S+ 18:08 0:00 grep --color=auto -i screen
alexq 20270 0.0 0.0 120040 2004 ? Ss Jul21 0:19 SCREEN -R
$ ls -al /var/run/screen/S-alexq
total 6
drwx------ 2 alexq alexq 4096 Jul 29 17:26 .
drwxrwxr-x 5 root screen 4096 Jul 21 21:33 ..
prwx------ 1 alexq alexq 0 Jul 29 17:46 20270.pts-14.myhost
하지만 스크린 세션이 아닌 로그인하면 스크린에서 기존 세션을 찾을 수 없습니다.
$ screen -ls
No Sockets found in /tmp/uscreens/S-alexq.
기반질문환경 변수를 /var/run/screen/S-alexq로 설정 하려고 했지만 SCREENDIR
이렇게 해도 화면에서 여전히 세션을 찾을 수 없습니다.
$ export SCREENDIR=/var/run/screen/S-alexq
$ screen -ls
No Sockets found in /var/run/screen/S-alexq.
$ export SCREENDIR=/var/run/screen
$ screen -ls
You are not the owner of /var/run/screen.
정말 혼란스러운 점은 ~/.zshrc 파일에서 스플래시 화면을 "screen -ls"로 바꾸면 콘솔에 다음이 인쇄된다는 것입니다.
There are screens on:
20270.pts-14.myhost (Attached)
1 Sockets in /var/run/screen/S-alexq.
그래서 어떤 이유로 로그인 중 SSH 화면에서는 기존 세션을 찾을 수 있지만 콘솔 화면에서는 찾을 수 없습니다.
SSH 로그인 세션 중에만 화면이 표시되고 이후에는 표시되지 않는 이유를 알아내는 데 도움을 줄 수 있는 사람이 있습니까?
답변1
두 개의 사본이 있습니다 screen
. 하나는 세션을 에 저장 /tmp/uscreens
하고 다른 하나는 세션을 에 저장하므로 /var/run/screen
서로의 세션을 볼 수 없습니다.
서로의 대화를 강제로 보도록 할 수 있다고 해도 screen
서로 다른 버전의 카피가 나올 가능성이 있고, 두 사람이 대화를 나누다 보면 안 좋은 일이 생길 가능성도 있다. 그러나 무엇을 관찰하든 $SCREENDIR
보안 조치인 다른 세션 디렉토리를 사용하도록 강제할 수는 없습니다 ( screen
정확한 OS 및 구성에 따라 setuid 또는 setgid일 수 있는 권한 때문에). .
$PATH
이 문제는 로그인 방법에 따라 로그인 방법이 다르기 때문에 발생합니다.
해결 방법은 세션을 시작할 때와 동일한 화면 복사본을 사용하여 세션을 재개하는 것입니다. 또는 복사본 중 하나를 비활성화하거나 제거하여 screen
향후 혼동 가능성을 제거할 수 있습니다.