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


9

스크립트에서 가능한 한 많이 자동화하는 방법을 실험하고 있습니다. 더 흥미로운 과제 중 하나는 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 스크립트에서 연결하면 명령을 보낸 다음 분리 할 수있는 방법이 있습니까?


각 사용자에게 단일 화면 세션이있는 것 같습니다. Byobu에 익숙하지 않습니다. 왜 5 개의 스크린 세션이 있다고 생각하십니까?
Gilles 'SO- 악마 그만'

@Gilles 더 많은 연구에 따르면 각 사용자마다 하나의 스크린 세션 만있는 것으로 나타났습니다. 나는 그 이후 더 많은 htop스크린 프로세스를 보여준 곳을 생각했다
TheLQ

답변:


7

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

byobu -r -p2

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

-X모든 명령을 byobu/ screen세션으로 보낼 수 있으며 -p스위치 와 함께 작동 합니다.

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

이것은 a uname -a를 두 번째 (실제로 세 번째) byobu 창으로 echo보내고 끝에는 캐리지 리턴을 보내 명령이 실행됩니다.


문자열 끝에 줄 바꿈을 포함시킬 수 있습니다.
Gilles 'SO- 악마 그만'

"물건"이란 무엇입니까? 그것을 제거하면 byobu "-X Unknown command 'uanme -a'에서 오류가 발생합니다.
TheLQ

그것은 세션 에 명령 (이 경우 uname -a)을 "붙여 넣는다 "고 말합니다 byobu.
wag

아, 거기서 연결하지 않았습니다. 어쨌든 도움을 주셔서 감사합니다. 완벽하게 작동합니다!
TheLQ

stuff 명령은 tmux가 아닌 GNU 화면에서만 작동하는 것으로 보이며 최근에 기본값으로 보입니다.
Phil Ricketts

7

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

screen -S sessionname -p windowname -X screencommand

세션 이름은 -S화면 또는 sessionname명령을 시작할 때 옵션 으로 설정됩니다 . 기본적 byobu으로 byobu와 함께 있습니다. 이후에 화면 PID를 사용할 수도 있습니다 -S. title명령 으로 창 이름을 설정할 수 있습니다 . 창 번호를 사용할 수도 있습니다.

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

공간이없는 문자열을 채울 때 효과가 있지만 아무것도하지 않습니다. 어떤 아이디어?
François Beausoleil

알았어. 공간은 bash에 의해 로컬로 해석되었으며 SSH는 전체 명령을 보지 못했습니다. 지금 작동합니다!
François Beausoleil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.