byobu 스크린 세션에 연결하고 명령을 실행하시겠습니까?

byobu 스크린 세션에 연결하고 명령을 실행하시겠습니까?

제가 작성 중인 스크립트에서는 이를 최대한 자동화하는 방법을 찾으려고 노력하고 있습니다. 더 흥미로운 과제 중 하나는 byobu 화면 세션에 연결하고 명령을 실행하는 것입니다.

그래서 나는 스크린 세션 수를 살펴보는 명백한 것부터 시작했습니다(게임에는 byobu에 3개의 창이 있고 lordquackstar에는 2개가 있습니다. 사용자는 별도의 퍼티 인스턴스에 있습니다).

game@quackgame:~$ screen -ls
There is a screen on:
        2019.byobu      (01/05/2011 05:10:04 PM)        (Attached)
1 Socket in /var/run/screen/S-game.

한개밖에 없어서 시스템을 확인해봤는데

lordquackstar@quackgame:/home/game$ sudo ls -lAR /var/run/screen/
/var/run/screen/:
total 0
drwx------ 2 game          users         100 2011-01-06 09:18 S-game
drwx------ 2 lordquackstar lordquackstar 100 2011-01-06 09:17 S-lordquackstar

/var/run/screen/S-game:
total 4
prwx------ 1 game users 0 2011-01-08 07:55 2019.byobu
-rw------- 1 game users 0 2011-01-06 09:18 byobu-exchange
-rw-r--r-- 1 game users 3 2011-01-08 07:32 byobu.updates-available

/var/run/screen/S-lordquackstar:
total 4
prwx------ 1 lordquackstar lordquackstar 0 2011-01-08 07:42 1169.byobu
-rw------- 1 lordquackstar lordquackstar 0 2011-01-06 09:17 byobu-exchange
-rw-r--r-- 1 lordquackstar lordquackstar 3 2011-01-08 07:35 byobu.updates-available

여전히 멀티스크린이 지원되지 않습니다.

내 질문에 : 스크립트에서 byobu의 창에 연결하는 방법은 무엇입니까?


약간 관련된 내용으로, bash 스크립트에서 연결한 후 명령을 보낸 다음 분리할 수 있는 방법이 있습니까?

답변1

창을 포함하여 이전에 분리된 byobu/ 세션 에 직접 연결할 수 있습니다 .screen

byobu -r -p2

창 2(또는 지정된 창)에 다시 연결됩니다.

-Xbyobu모든 명령은 / 세션 으로 전송될 수 screen있으며 -p스위치에서도 작동합니다.

byobu -p2 -X stuff "uname -a $(echo -ne '\r')"

그러면 명령이 실행될 수 있도록 uname -a두 번째(실제로는 세 번째) byobu 창과 마지막으로 캐리지 리턴이 전송됩니다 .echo

답변2

특정 화면 세션의 특정 화면 창에 연결하지 않고도 명령을 보낼 수 있습니다.

screen -S sessionname -p windowname -X screencommand

-S세션 이름은 화면이나 명령을 시작할 때 옵션을 통해 설정되며 sessionname기본적으로 byobubyobu와 함께 사용됩니다. 나중에 화면 PID를 사용할 수도 있습니다 -S. 이 명령을 사용하여 창 이름을 설정할 수 있습니다 title. 창 번호를 사용할 수도 있습니다.

screen -S byobu -p 1 -X stuff 'ls
'

관련 정보