screen : 다른 구성으로 세션을 자동으로 생성하거나 다시 연결합니다.

screen : 다른 구성으로 세션을 자동으로 생성하거나 다시 연결합니다.

다음 기능을 달성하는 깨끗한 방법은 무엇입니까?

function screen_create_or_reuse(){
if [ running_screen_session "$1" ]; then
    reattach_screen_session screen_name_"$1"
else
    create_screen_session "$1" screen_config_"$1" screen_name_"$1"
fi
}

screen -ls현재 세션이 이미 실행 중인지( 또는 아닌지 ) 걱정해야 합니다 screen -wipe. 이에 따르면 실행되지 않으면 사용자 정의 구성 및 이름을 사용하여 세션( )을 수동으로 생성한 다음 screen -c config -S name수동으로 다시 연결합니다. 나는 screen_create_or_reuse name이러한 모든 세부 사항을 처리할 수 있는 명령을 원합니다 .

세션 등의 존재를 감지하기 위해 bash 스크립트를 작성하려고 생각했지만 화면에 이미 많은 옵션이 있는 것을 보니 너무 멀리 갈 수도 있습니다.

화면을 사용하여 위의 내용을 달성하는 깨끗한 방법은 무엇입니까?

답변1

다음 옵션은 다음과 같습니다 man screen.

   -d -R   Reattach a session and if necessary detach or even create it first.

이를 사용하여 -S세션 이름을 설정합니다.

답변2

대부분의 경우 -S foo -d -RR원하는 작업을 수행합니다. 즉, 지정한 이름으로 세션에 연결하고 세션이 아직 없으면 세션을 만듭니다.

나는 한 단계 더 나아가 이름별 프로필을 찾는 것을 좋아합니다. 이를 통해 다양한 세션 이름, 실행 애플리케이션 등에 대해 다양한 환경 변수를 정의할 수 있습니다.

etc/screen/0.screenrc다음은 다른 세션별 구성 파일에서 가져온 내 파일입니다 .

source ~/.screenrc
unsetenv DISPLAY
msgminwait 0
msgwait 0
screen -t post_initialization 39 sh -c 'sleep 1; screen -X msgwait 5; screen -X msgminwait 1'

etc/term/emacs.screenrc다음은 Emacs를 실행하는 창을 시작하는 세션별 구성 파일의 예입니다 (여러 터미널에 연결할 수 있는 Emacs 23에서는 더 이상 유용하지 않음).

sessionname emacs
source 0.screenrc
screen -t emacs emacs -nw

다음은 이러한 세션을 호출하는 데 사용하는 스크립트의 수정된 버전입니다. scr emacs위에 표시된 세션을 선택하려면 예를 들어 이를 호출하세요 . 세션 이름에 해당하는 구성 파일이 없으면 ~/etc/screen쉘을 실행합니다.

#!/bin/sh
session_name=$1; shift
if [ -r "$HOME/etc/screen/$session_name.screenrc" ]; then
  exec screen -S "$session_name" -d -RR -c "$HOME/etc/screen/$session_name.screenrc" "$@"
else
  if [ $# -eq 0 ]; then set "$SHELL"; fi
  exec screen -S "$session_name" -d -RR -c "$HOME/etc/screen/0.screenrc" "$@"
fi

관련 정보