In einem Skript, das ich erstelle, experimentiere ich damit, wie ich so viel wie möglich automatisieren kann. Eine der interessanteren Herausforderungen besteht darin, eine Verbindung zu einer Byobu-Bildschirmsitzung herzustellen und einen Befehl auszuführen.
Also habe ich an der offensichtlichen Stelle angefangen und mir angesehen, wie viele Bildschirmsitzungen es gibt (das Spiel hat 3 Fenster in Byobu und Lordquackstar hat 2. Die Benutzer befinden sich in separaten Kittinstanzen).
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.
Nur eine da, also habe ich nach dem System gesucht
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
Immer noch keine mehreren Bildschirme
Also für meine Frage: Wie kann ich über ein Skript eine Verbindung zu einem Fenster in byobu herstellen?
Gibt es eine Möglichkeit, nach dem Herstellen einer Verbindung über ein Bash-Skript einen Befehl zu senden und dann zu lösen?
quelle
htop
mehrere Bildschirmprozesse zeigtenAntworten:
Sie können direkt auf eine zuvor freistehend befestigen
byobu
/screen
Sitzung mit dem Fenster:wird wieder in Fenster 2 (oder ein benanntes) eingefügt.
-X
kann jeden Befehl an einebyobu
/screen
session senden und funktioniert auch mit dem-p
Switch.Dies sendet ein
uname -a
an das zweite (tatsächlich dritte) Byobu-Fenster, dasecho
am Ende einen Wagenrücklauf sendet, damit die Befehle ausgeführt werden.quelle
uname -a
) in diebyobu
Sitzung.Sie können einen Befehl an ein bestimmtes Bildschirmfenster einer bestimmten Bildschirmsitzung senden, ohne ihn anzuhängen.
Der Sitzungsname wird mit der
-S
Option beim Startbildschirm oder demsessionname
Befehl festgelegt. Standardmäßig ist esbyobu
mit Byobu. Sie können auch die Bildschirm-PID nach verwenden-S
. Mit demtitle
Befehl können Sie den Namen eines Fensters festlegen . Sie können auch die Fensternummer verwenden.quelle