Em um script que estou construindo, estou experimentando como automatizar o máximo possível. Um dos desafios mais interessantes é conectar-se a uma sessão de tela do byobu e executar um comando.
Então comecei no lugar óbvio, olhando quantas sessões de tela existem (o jogo tem 3 janelas no byobu e o lordquackstar tem 2. Os usuários estão em instâncias de massa separadas)
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.
Apenas um lá, então eu verifiquei o sistema
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
Ainda não há várias telas
Então, para a minha pergunta: como conectar-me a uma janela no byobu a partir de um script?
Em uma nota um pouco relacionada, uma vez que eu me conecto a ele a partir de um script bash, existe alguma maneira de enviar um comando para ele e então removê-lo?
bash
gnu-screen
byobu
TheLQ
fonte
fonte
htop
os processos de tela múltipla mostrouRespostas:
Você pode anexar diretamente a uma sessão
byobu
/ desanexação anteriormentescreen
, incluindo a janela:recolocará na janela 2 (ou em uma nomeada).
-X
pode enviar qualquer comando para uma sessãobyobu
/screen
e também funciona com o-p
switch.Isso enviará uma
uname -a
para a segunda (terceira na verdade) janela do byobu, eecho
no final envia um retorno de carro para que os comandos sejam executados.fonte
uname -a
) nabyobu
sessão.Você pode enviar um comando para uma janela de tela específica de uma sessão de tela específica sem anexar a ela.
O nome da sessão é definido com a
-S
opção ao iniciar a tela ou osessionname
comando; por padrão ébyobu
com byobu. Você também pode usar a tela PID depois-S
. Você pode definir o nome de uma janela com otitle
comando Você também pode usar o número da janela.fonte