때때로,SSH 쉘가지다활성 screen
세션내 원격 서버로 이동하여부서진(예를 들어 인터넷 회선이 그다지 안정적이지 않음) 세션이 여전히 연결되어 있습니다.
그런 다음 SSH를 통해 다시 서버에 연결했고복원을 시도하다회의 screen
:
luis@Zarzamoro:~$ screen -r
There is a screen on:
9166.pts-2.Zarzamoro (12/23/15 23:47:34) (Attached)
There is no screen to be resumed.
luis@Zarzamoro:~$ screen -r 9166.pts-2.Zarzamoro
There is a screen on:
9166.pts-2.Zarzamoro (12/23/15 23:47:34) (Attached)
There is no screen to be resumed matching 9166.pts-2.Zarzamoro.
저는 GNU 화면에 대해 잘 모릅니다.왜이런 일이 일어날까요?
가능합니까?다시 덮다이 scree
n 회의?
답변1
사용:
screen -r -d <pid>.<tty>.<host>
귀하의 경우:
screen -r -d 9166.pts-2.Zarzamoro
그러면 반대쪽 화면이 강제로 분리되어 연결됩니다.
답변2
답변3
이런 일이 가끔 나에게 일어납니다. 나는 당신의 tty가 화면에서 적절하게 분리되지 않았기 때문에 서버에 다시 연결해도 여전히 화면에 "연결"되어 있다고 생각합니다.
이것이 내가 한 일입니다:
screen -d
screen -r (if you have only one screen)
screen -r <pid> (if you have more than one screen)
너도 할 수 있어
screen -r -d (add <pid> if you have more than one screen)
올바르게 연결되지 않은 스크린을 분리했다가 다시 연결하세요.
또한 이 때 screen -r
전체 화면의 이름을 지정할 필요 없이 pid(4자리)만 지정하면 됩니다.
답변4
아래와 같이 자동화할 수도 있습니다.여기기존 screen 세션에 자동으로 다시 연결됩니다(또는 존재하지 않는 경우 새 세션을 만듭니다).
.bashrc
대상 호스트의 ~/.bashrc 상단에 다음 줄을 추가합니다.
# Auto-screen invocation. see: http://taint.org/wk/RemoteLoginAutoScreen
# if we're coming from a remote SSH connection, in an interactive session
# then automatically put us into a screen(1) session. Only try once
# -- if $STARTED_SCREEN is set, don't try it again, to avoid looping
# if screen fails for some reason.
if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x -a "${SSH_TTY:-x}" != x ]
then
STARTED_SCREEN=1 ; export STARTED_SCREEN
[ -d $HOME/lib/screen-logs ] || mkdir -p $HOME/lib/screen-logs
sleep 1
screen -RR && exit 0
# normally, execution of this rc script ends here...
echo "Screen failed! continuing with normal bash startup"
fi
# [end of auto-screen snippet]