여러 스크린 세션을 자동으로 시작하려면 어떻게 해야 합니까?

여러 스크린 세션을 자동으로 시작하려면 어떻게 해야 합니까?

screen를 시작하고 , 서로 다른 이름으로 4개의 세션을 생성하고, 4개의 서로 다른 명령을 실행하는 명령을 작성하려고 합니다 .

나는 이 작업을 수동으로 수행하는 방법을 알고 있습니다.

1. screen
2. ./command1 args
3. CTRL-A :sessionname Session 1
4. CTRL-A C
5. (GOTO 2)

bash 스크립트 등으로 이 작업을 수행할 수 있나요? 어떻게 해야 합니까?

답변1

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"$COMMAND백그라운드에서 실행되는 화면이 생성됩니다 .

를 사용하여 활성 세션을 확인 screen -ls하고 다시 연결할 수 있습니다 screen -r "$SESSION_NAME".

로 죽은 세션을 종료할 수 있습니다 screen -wipe.

답변2

.screenrc여러 세션을 자동으로 시작하려면 화면에 대한 구성 파일인 파일을 설정합니다 . 여기에서 세션을 생성하고, 프로그램을 시작하고, 작업 디렉토리를 변경하는 등의 작업을 수행할 수 있습니다. 저는 이를 사용하여 스크린 세션을 초기화합니다.

.screenrc 파일에 대한 간단한 예:

# don't display the copyright page
startup_message off

# increase scrollback buffer size
defscrollback 10000

# create windows
screen -t TODO vim TODO.txt
chdir src
screen -t coding vim main.c
screen -t run 

위의 명령 screen은 각각 하나의 화면 세션을 생성합니다. -t세션 제목을 설정합니다. 나머지 줄은 실행할 명령과 해당 매개변수입니다.

따라서 첫 번째와 두 번째 screen줄은 세션을 시작하고 vim내부에서 실행됩니다. 세 번째는 세션을 시작하고 프롬프트를 표시합니다. chdir모든 후속 세션의 작업 디렉터리를 변경합니다.

여러 개의 파일을 갖고 싶다면 .screenrc원하는 대로 이름을 지정하고 screen -c myscreenrc.

답변3

d, m, S 옵션을 함께 사용할 수 있습니다.

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3

S : 화면을 생성합니다.

d : 화면에서 분리

m : 다른 화면 내에서 화면이 호출되는지 여부에 관계없이 화면 생성을 강제합니다.

답변4

조사나 지원을 위해 호스트 집합을 공개해야 하는 경우가 많습니다. 가끔 이러한 추가 창이 필요하기 때문에 접근 방식보다는 쉘 스크립트를 사용하기로 결정했습니다 .screenrc.

예를 들어 ~/bin/prod_support에서:

#!/bin/bash

if [[ ! -z "$STY" ]]; then
        screen -t "hosta" ssh hosta
        screen -t "hostb" ssh hostb
else
        echo "start up screen first"
fi

다음에서 실행하는 경우스크린이 아닌쉘 알림을 받습니다... 내부 화면에서 실행하면 각 스크립트 실행에 대해 제목이 붙은 창이 추가됩니다.

관련 정보