W skrypcie, który buduję, eksperymentuję z automatyzacją w jak największym stopniu. Jednym z bardziej interesujących wyzwań jest połączenie się z sesją ekranową Byobu i wykonanie polecenia.
Zacząłem więc w oczywistym miejscu, sprawdzając, ile jest sesji ekranowych (gra ma 3 okna w Byobu, a lordquackstar ma 2. Użytkownicy są w osobnych instancjach szpachli)
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.
Jest tylko jeden, więc sprawdziłem system
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
Nadal nie ma wielu ekranów
Więc na moje pytanie: jak mogę połączyć się z oknem w byobu ze skryptu?
W nieco pokrewnej notatce, czy po połączeniu się ze skryptem bash istnieje jakiś sposób, aby wysłać mu polecenie, a następnie oderwać?
bash
gnu-screen
byobu
TheLQ
źródło
źródło
htop
pokazałem wiele procesów ekranowychOdpowiedzi:
Możesz bezpośrednio dołączyć do wcześniej odłączonej
byobu
/screen
sesji, w tym okno:ponownie przyłączy się do okna 2 (lub nazwanego).
-X
może wysłać dowolne polecenie do sesjibyobu
/,screen
a także współpracuje z-p
przełącznikiem.Spowoduje to wysłanie a
uname -a
do drugiego (faktycznie trzeciego) okna Byobu,echo
na końcu wysyła znak powrotu karetki, aby polecenia zostały wykonane.źródło
uname -a
) dobyobu
sesji.Możesz wysłać polecenie do określonego okna ekranu określonej sesji ekranu bez dołączania się do niego.
Nazwa sesji jest ustawiana z
-S
opcją przy uruchamianiu ekranu lubsessionname
polecenia; domyślnie jest tobyobu
byobu. Możesz także użyć ekranu PID po-S
. Możesz ustawić nazwę okna za pomocątitle
polecenia. Możesz także użyć numeru okna.źródło