제가 작성 중인 스크립트에서는 이를 최대한 자동화하는 방법을 찾으려고 노력하고 있습니다. 더 흥미로운 과제 중 하나는 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(또는 지정된 창)에 다시 연결됩니다.
-X
byobu
모든 명령은 / 세션 으로 전송될 수 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
기본적으로 byobu
byobu와 함께 사용됩니다. 나중에 화면 PID를 사용할 수도 있습니다 -S
. 이 명령을 사용하여 창 이름을 설정할 수 있습니다 title
. 창 번호를 사용할 수도 있습니다.
screen -S byobu -p 1 -X stuff 'ls
'