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