连接到byobu屏幕会话并执行命令?


9

在构建脚本时,我正在尝试如何尽可能地自动化。更有趣的挑战之一是连接到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不熟悉,您为什么认为有五个屏幕会议?
吉尔斯(Gilles)'所以

@Gilles更多研究发现,每个用户只有一个屏幕会话。我认为他们htop展示了多个屏幕制作流程之后,还有更多活动
TheLQ 2011年

Answers:


7

您可以直接附加到包括窗口的先前分离的byobu/ screen会话:

byobu -r -p2

将重新附加到窗口2(或命名窗口)中。

-X可以将任何命令发送到byobu/ screen会话,并且还可以与该-p开关一起使用。

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

这将向uname -a第二个(实际上是第三个)byobu窗口echo发送一个,最后发送一个回车,以便执行命令。


您只需在字符串的末尾包含一个换行符即可。
吉尔(Gilles)“所以,别再邪恶了”,

什么是“东西”?删除它给出了错误的屏风“-X未知的命令‘uanme -A’
TheLQ

它按照它说的去做,将命令(在这种情况下uname -a)“塞入” byobu会话中。
WAG

啊,没有在那里建立连接。无论如何,感谢您的帮助,它运行良好!
TheLQ 2011年

stuff命令似乎仅适用于GNU屏幕,而不适用于tmux,这似乎是最近的默认设置。
Phil Ricketts 2013年

7

您可以将命令发送到特定屏幕会话的特定屏幕窗口,而无需附加命令。

screen -S sessionname -p windowname -X screencommand

会话名称是-S在启动屏幕或sessionname命令时使用选项设置的。默认情况下,它byobu与byobu一起使用。您还可以在之后使用屏幕PID -S。您可以使用title命令设置窗口的名称。您也可以使用窗口编号。

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

当我塞满没有空格的字符串时,它对我有用,但显然什么也没做。有任何想法吗?
弗朗索瓦博索莱伊

好,我不好 该空间由bash在本地解释,并且SSH没有看到完整的命令。现在工作!
弗朗索瓦博索莱伊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.