Bash

連接到 byobu 螢幕會話並執行命令?

  • October 20, 2016

在我正在建構的腳本中,我正在嘗試如何盡可能地自動化。更有趣的挑戰之一是連接到 byobu 螢幕會話並執行命令。

所以我從明顯的地方開始,查看有多少螢幕會話(遊戲在 byobu 中有 3 個視窗,而 lordquackstar 有 2 個。使用者在不同的膩子實例中)

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.

那裡只有一個,所以我檢查了系統

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

還是沒有多屏

所以對於我的問題:如何從腳本連接到 byobu 中的視窗?


在一個稍微相關的說明中,一旦我從 bash 腳本連接到它,有沒有辦法向它發送命令然後分離?

您可以直接附加到以前分離的byobu/screen會話,包括視窗:

byobu -r -p2

將重新連接到視窗 2(或命名的視窗)。

-X``byobu可以向/會話發送任何命令screen,也可以與-p交換機一起使用。

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

這會將 a 發送uname -a到第二個(實際上是第三個)byobu 視窗,echo最後發送一個輸入符,以便執行命令。

您可以將命令發送到特定螢幕會話的特定螢幕視窗,而無需附加到它。

screen -S sessionname -p windowname -X screencommand

會話名稱由-S啟動螢幕或sessionname命令時的選項設置;預設情況下,它byobu與 byobu 一起使用。您還可以使用螢幕 PID 後-Stitle您可以使用該命令設置視窗的名稱。您也可以使用視窗編號。

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

引用自:https://unix.stackexchange.com/questions/5546