내가보고 있어요http://taint.org/wk/RemoteLoginAutoScreenSSH를 통해 로그인하면 자동으로 스크린 세션이 시작되도록 서버를 설정합니다.
내 .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]
문제는 항상 Rails 애플리케이션 서버를 실행하는 별도의 명명된 스크린 세션이 있다는 것입니다. 이제 로그인하면 이 세션으로 이동됩니다.
이름이나 다른 값으로 세션을 선택하지 않도록 위의 코드를 수정할 수 있습니까? 분리된 세션이 유일한 화면 세션인 경우 새 화면 세션을 시작하고 싶습니다.
내가 가진 또 다른 문제는 분리할 때 스크린 세션을 떠나는 대신 SSH 연결을 완전히 종료한다는 것입니다.
답변1
다음으로 변경하세요.
if [ -z "$STARTED_SCREEN" ] && [ -n "$SSH_TTY" ]
then
case $- in
(*i*)
STARTED_SCREEN=1; export STARTED_SCREEN
mkdir -p -- "$HOME/lib/screen-logs"
screen -RR -S main ||
echo >&2 "Screen failed! continuing with normal bash startup"
esac
fi
즉, 다른 화면 세션 대신 "main"이라는 이름의 화면 세션을 연결(또는 생성)하고 화면이 성공적으로 돌아온 후에 종료하지 마세요.