내 .bashrc에 "screen -r"을 넣는 것이 좋은 생각인가요?

내 .bashrc에 "screen -r"을 넣는 것이 좋은 생각인가요?

내 서버에서 SSH 세션을 유지하기 위해 screen을 사용하고 싶습니다. 로그인할 때 사용자에 대해 실행 중인 세션을 자동으로 재개할 수 있다면 좋을 것입니다. 이를 수행하는 간단한 방법은 .bashrc에 "screen -r"을 추가하는 것이며 이는 제대로 작동하는 것 같습니다. 아직 테스트하지 않은 조건에서 이것이 문제가 될지 궁금합니다. 여기 경험이 있는 사람 중에 이것이 내가 해야 할 일인지 말해 줄 수 있는 사람이 있습니까?

답변1

screen -R -d기존 세션이 있으면 자동으로 연결하고 그렇지 않으면 세션을 만들어야 합니다 .

당신을 확인하십시오대화형 쉘에서만 이 작업을 수행하십시오.. 상위 프로세스가 rshd 또는 sshd인 경우 비대화형 셸에 대한 Bash 소스 ~/.bashrc도 있습니다(문서에 언급되어 있지만 놓치기 쉽습니다). $-가 포함되어 있기 때문에 쉘이 대화형임을 알 수 있습니다 i.

case $- in
  *i*) screen -Rd;;
esac

이렇게 하면 서로 다른 터미널에서 서로 다른 화면 세션을 쉽게 실행할 수 없습니다.

로그아웃하려면 화면에서 분리한 다음 상위 셸을 종료해야 합니다. exec screen대신 를 사용하면 이 문제를 해결할 수 있습니다 screen.

로그인 셸이 아닌 다른 셸을 시작하면 화면에 표시되는데, 이는 대부분의 경우 원하는 방식이 아닙니다. 최소한 다음과 같은 대화형 SSH 세션에서 직접 실행하는 경우로 제한하겠습니다 ~/.bash_profile.

case "/$(ps -p $PPID -o comm=)" in
  */sshd) screen -R -d;;
esac

.bashrc오류로 인해 쉘이 종료되면 로그인이 어려워지므로 복잡한 작업을 수행할 때는 주의하십시오 .


내가 무엇을추천하다서버의 셸 초기화 파일을 수정하지 않고 대신 다음과 같이 클라이언트에서 명시적으로 screen을 실행하는 것입니다.

ssh -t host.example.com screen -R -d

(클라이언트에 쉘 별칭이나 데스크톱 환경 바로 가기를 만들 수도 있습니다.) 이렇게 하면 화면을 실행하지 않도록 쉽게 선택하고 대체 세션 이름 등을 지정할 수 있습니다.

답변2

X 서버 시작 스크립트는 종종 새로운 쉘을 시작합니다. 예를 들어 "사용자 정의 세션"을 사용하여 gdm을 사용하여 로그인하는 경우입니다.

종료되지 않는 어떤 것이든 X 시작이 중단될 수 있다고 생각합니다. 여기에는 screen -r.

관련 정보