En un script que estoy construyendo, estoy experimentando cómo automatizar tanto como sea posible. Uno de los desafíos más interesantes es conectarse a una sesión de pantalla byobu y ejecutar un comando.
Así que comencé en el lugar obvio, mirando cuántas sesiones de pantalla hay (el juego tiene 3 ventanas en byobu y lordquackstar tiene 2. Los usuarios están en instancias de masilla 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.
Solo uno allí, así que verifiqué el 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
Todavía no hay pantallas múltiples
Entonces, para mi pregunta: ¿cómo puedo conectarme a una ventana en byobu desde un script?
En una nota ligeramente relacionada, una vez que me conecto desde un script bash, ¿hay alguna forma de enviarle un comando y luego desconectarlo?
bash
gnu-screen
byobu
TheLQ
fuente
fuente
htop
múltiples procesos pantalla mostrabaRespuestas:
Puede adjuntar directamente a una sesión
byobu
/screen
sesión previamente separada , incluida la ventana:se volverá a unir a la ventana 2 (o una con nombre).
-X
puede enviar cualquier comando abyobu
/screen
session y también funciona con el-p
modificador.Esto enviará un
uname -a
a la segunda (tercera realidad) ventana de byobu, yecho
al final envía un retorno de carro para que se ejecuten los comandos.fuente
uname -a
) en labyobu
sesión.Puede enviar un comando a una ventana de pantalla en particular de una sesión de pantalla en particular sin adjuntarlo.
El nombre de la sesión se establece con la
-S
opción al iniciar la pantalla o elsessionname
comando; por defecto esbyobu
con byobu. También puede usar el PID de la pantalla después-S
. Puede establecer el nombre de una ventana con eltitle
comando. También puedes usar el número de ventana.fuente