Dans un script que je construis, j'expérimente comment automatiser autant que possible. L'un des défis les plus intéressants est de se connecter à une session d'écran byobu et d'exécuter une commande.
J'ai donc commencé dans un endroit évident, en regardant le nombre de sessions d'écran (le jeu a 3 fenêtres dans byobu et lordquackstar en a 2. Les utilisateurs sont dans des instances de mastic distinctes)
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.
Un seul là-bas, j'ai donc vérifié le système
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
Toujours pas d'écrans multiples
Donc pour ma question: comment puis-je me connecter à une fenêtre dans byobu à partir d'un script?
Sur une note légèrement liée, une fois que je me suis connecté à partir d'un script bash, existe-t-il un moyen de lui envoyer une commande puis de la détacher?
bash
gnu-screen
byobu
TheLQ
la source
la source
htop
montré plusieurs processus d'écranRéponses:
Vous pouvez directement attacher à une session
byobu
/screen
session précédemment détachée , y compris la fenêtre:se rattachera à la fenêtre 2 (ou à une fenêtre nommée).
-X
peut envoyer n'importe quelle commande à une sessionbyobu
/screen
et fonctionne également avec le-p
commutateur.Cela enverra une
uname -a
à la deuxième (troisième en fait) fenêtre byobu,echo
la fin envoie un retour chariot afin que les commandes soient exécutées.la source
uname -a
) dans labyobu
session.Vous pouvez envoyer une commande à une fenêtre d'écran particulière d'une session d'écran particulière sans y attacher.
Le nom de la session est défini avec l'
-S
option lors du démarrage de l'écran ou de lasessionname
commande; par défaut c'estbyobu
avec byobu. Vous pouvez également utiliser l'écran PID après-S
. Vous pouvez définir le nom d'une fenêtre avec latitle
commande. Vous pouvez également utiliser le numéro de fenêtre.la source