Byobu ekran oturumuna bağlan ve komutu yürüt?


9

Bir senaryoda, olabildiğince otomatikleştirmeyi deniyorum. Daha ilginç zorluklardan biri, bir byobu ekran oturumuna bağlanmak ve bir komut yürütmektir.

Bu yüzden açık bir yerde, kaç ekran oturumu olduğuna baktım (oyunun byobu'da 3 penceresi var ve lordquackstar 2 tane var. Kullanıcılar ayrı macun örneklerinde)

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.

Sadece bir tane var, bu yüzden sistemi kontrol ettim

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

Hala birden fazla ekran yok

Sorum için: Komut dosyasından byobu'daki bir pencereye nasıl bağlanabilirim?


Biraz ilgili bir notta, bir bash betiğinden bağlandığımda, ona bir komut göndermenin ve sonra detatch'ın herhangi bir yolu var mı?


Her kullanıcının tek bir ekran oturumu var gibi görünüyor. Byobu'yu tanımıyorum, neden beş ekran oturumu olduğunu düşünüyorsunuz?
Gilles 'SO- kötü olmayı kes'

@Gilles Daha fazla araştırma, her kullanıcı için yalnızca bir ekran oturumu olduğunu ortaya çıkardı. Onların htopbirden fazla ekran işlemi gösterdiğinden beri nerede olduklarını düşündüm
TheLQ

Yanıtlar:


7

Pencere de dahil olmak üzere önceden ayrılmış byobu/ screenoturuma doğrudan ekleyebilirsiniz :

byobu -r -p2

pencere 2'ye (veya adlandırılmış bir pencereye) yeniden bağlanır.

-Xbir byobu/ screenoturuma herhangi bir komut gönderebilir ve ayrıca -panahtar ile çalışır .

byobu -p2 -X stuff "uname -a $(echo -ne '\r')"

Bu uname -a, ikinci (aslında üçüncü) byobu penceresine bir gönderecek echo, sonunda komutlar yürütülecek şekilde bir satır başı gönderecektir.


Yalnızca dizenin sonuna bir satırsonu ekleyebilirsiniz.
Gilles 'SO- kötü olmayı kes'

Ne "şeyler"? Kaldırıldığında byobu "-X Bilinmeyen komutu 'uanme -a'
TheLQ

Söylediklerini yapar, komutu (bu durumda uname -a) byobuoturuma "doldurur" .
wag

Ah, bağlantıyı oraya yapmadı. Her neyse, yardım için teşekkürler, mükemmel çalışıyor!
TheLQ

Stuff komutu, son zamanlarda varsayılan gibi görünen tmux ile değil, sadece GNU ekranıyla çalışıyor gibi görünüyor.
Phil Ricketts

7

Belirli bir ekran oturumunun belirli bir ekran penceresine, ona iliştirmeden komut gönderebilirsiniz.

screen -S sessionname -p windowname -X screencommand

Oturum adı, -Sekranı veya sessionnamekomutu başlatırken seçenekle ayarlanır ; varsayılan byobuolarak byobu ile. Daha sonra ekran PID'sini de kullanabilirsiniz -S. titleKomut ile bir pencere adı ayarlayabilirsiniz . Pencere numarasını da kullanabilirsiniz.

screen -S byobu -p 1 -X stuff 'ls
'

Boşluksuz bir dize doldurduğumda işe yarıyor ama görünüşe göre hiçbir şey yapmıyor. Herhangi bir fikir?
François Beausoleil

Tamam, benim hatam. Alan yerel olarak bash tarafından yorumlandı ve SSH tam komutu görmüyordu. Şimdi çalışıyor!
François Beausoleil
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.