bash 화면을 백그라운드에서 설정하고 나중에 앞으로 가져올 수 있는 방법은 무엇입니까?

bash 화면을 백그라운드에서 설정하고 나중에 앞으로 가져올 수 있는 방법은 무엇입니까?

이것은 질문에 대한 더 깊은 설명입니다.

내 목표는 다음과 같습니다

  1. 환경 변수 세트로 구성된 bash 쉘을 시작하지만 백그라운드에서 실행됩니다.

  2. 5개 정도 발사화면bash 셸의 명령은 각각 자체 명령을 실행하지만 bash 셸에 설정된 환경 변수를 사용합니다. 명령 은 screen모두 bash 창에 배열되어야 하며 가급적이면 타일로 배열되어야 합니다.

  3. 나중에 모든 명령이 표시된 bash 쉘을 호출하십시오 screen.

  4. screen완료되면 bash 쉘과 관련 쉘을 닫습니다 .

답변1

글쎄, 귀하의 질문에 대해 얼마 후 몇 가지 관찰이 있습니다.

라인 2:명령은 모두 bash 창에 배열되어야 하며 바람직하게는 타일로 배열되어야 합니다.분리된 경우와 같이 불가능합니다.창문이 없어.

따라서 다시 연결하면 항상 하나만 표시됩니다.가짜 tty.

그러나 요청한 내용을 대략적으로 수행하려면 다음을 시도하십시오.

cat >screenRcTest먼저 다음을 입력하여 RCfile을 만듭니다.

setenv MyVariable Test
screen -t Top top
screen -t VMStat vmstat -n 1
screen -t OpenPorts watch -n 2 'netstat -tan | grep LISTEN'
screen -t IF-Configs watch -n2 'ip -s link show | grep -v "^ *[RT]X: bytes"'
screen -t "Bourne Again Shell" /bin/bash -i

래퍼를 다음과 같이 준비하는 것보다 run:

screen -ls | grep -q screenTest || screen -dmS screenTest -c ./screenRcTest

아직 존재하지 않는 경우 백그라운드에서 새 화면 세션이 실행됩니다.

건축용타일을 붙인프레젠테이션, 다음과 같이 다른 쉘 스크립트를 준비하십시오.cat >screenSplitTest

#!/bin/bash

while read line ;do
    screen -X $line
done <<eof
split
split
resize 20
split -v
resize 82
select 0
focus
select 1
focus
split -v
select 2
focus
select 3
focus
select 4
eof

그리고 잊지 마세요 chmod +x screenSplitTest.

마지막으로 실행표시 명령처럼:

xterm -fn 9x15 -geom 160x60 -exec screen -DrS screenTest 

그러면 준비만 있는 새 창이 열립니다 bash.

이에안의bash, 간단히 누르십시오 :

./screenSplitTest

이렇게 하면 창을 분할하여 bash 세션에서 다시 준비할 수 있습니다.

결과 스크린샷

지금 입력하세요:

echo $MyVariable
Test

따라서 환경 변수가 하위 bash에 어떻게 전달되는지 확인할 수 있습니다.

추가 수정:

모든 작업을 수행한 후에는 다음을 칠 수 있습니다.안의세게 때리다:

trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && ./screenSplitTest' WINCH

따라서 입력하여 연결을 끊을 수 있습니다. Ctrl-A d다음에 동일한 인수와 기하학을 사용하여 실행할 때보다 xtermscreenSplitTest 스크립트가 자동으로 시작됩니다.

편집 2

이제 bash가 다음의 하위인지 확인하기 위해 이것을 사용하여 trap에 설치할 수도 있습니다..bashrcMyVariable스크린Rc테스트화면( 예를 screenSplitTest들어 숨겨진 파일로 이동한 후 $HOME/.screenSplitTest):

[ "$TERM.$MyVariable" == "screen.Test" ] && \
    trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && $HOME/.screenSplitTest' WINCH

답변2

내가 아는 바로는 화면 인스턴스를 타일링할 수 없지만 tmux 인스턴스는 타일링할 수 있습니다. 당신이 할 수 있는 일은 공유 환경 설정을 위한 rc 파일을 생성한 다음 bash --rcfile <your file here>.

bash 셸은 tmux를 시작하여 시작되고 내부에서 일부 명령을 실행하여 각 bash 인스턴스에 대해 새 분할을 생성합니다(예: 표준 설정을 사용하여 수직 분할의 경우 Ctrl+b %).

관련 정보