.bashrc에“screen -r”을 넣는 것이 좋은 생각입니까?


17

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

답변:


20

당신이 필요로 screen -R -d모두가 하나가 존재하는 경우 자동으로 기존 세션에 연결하고 다른 세션을 만들 수 있습니다.

대화식 쉘에서만이 작업을 수행 하십시오 . ~/.bashrc상위 프로세스가 rshd 또는 sshd 인 경우 비 대화식 쉘의 경우에도 Bash 소스가 있습니다 (문서에 언급되어 있지만 놓치기 쉽습니다). $-포함 하기 때문에 쉘이 대화식임을 알 수 있습니다 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쉘을 종료하게되면 로그인이 어려워 질 수있는 오류로 복잡한 작업을 수행 할 때주의하십시오 .


내가 권장하는 것은 서버에서 쉘 초기화 파일을 수정하지 않고 대신 클라이언트에서 화면을 명시 적으로 실행하는 것입니다.

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

(클라이언트에서 쉘 별명 또는 데스크탑 환경 단축키를 작성할 수 있습니다.) 이렇게하면 화면을 실행하지 않도록 선택하고 대체 세션 이름 등을 지정할 수 있습니다.


완전한. 매뉴얼 페이지에 있어야합니다.
marcusw

그것은 실행 ssh를 위해 좋은 것은 아닙니다 screen -D -R또는 screen -D -RR?
niutech

2

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

종료되지 않는 것은 X 시작을 중단시킬 수 있다고 생각합니다. 포함됩니다 screen -r.


X 서버 시작 스크립트는 실행되지 않습니다 .bashrc. 그러나 이것이 실행될 때와 같이 문제가되는 다른 상황이 있습니다 ssh host.example.com somecommand(이상하게도 bash가 실행됩니다 .bashrc).
Gilles 'SO- 악의를 멈춰라'

"사용자 정의 세션"을 선택하면 일부 배포판에 있습니다. 우분투에서는 명시 적으로 .profile을 제공하고 다른 사람들은 로그인 쉘 내부에서 .xsession을 호출합니다. 이는 일반적으로 .bash_profile을 의미하며 대부분의 사용자는 .bash_profile 내부에서 .bashrc를 제공합니다.
Mikel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.