启动或重新连接分割的 GNU 屏幕,每个窗格运行自己的命令?

启动或重新连接分割的 GNU 屏幕,每个窗格运行自己的命令?

我希望能够启动一个命令,比如 ./stats.sh,来打开一个屏幕(或者 tmux,或者其他需要的屏幕),如果它已经存在则重新连接,如果不存在则启动,比如在一个窗格中运行“htop”,在另一个窗格中运行“dstat”。

我知道您可以在现有屏幕会话中使用 ctrl+a | 来执行此操作,但我希望能够通过可以运行的脚本完成所有操作。这可能吗?

提出这个问题的另一种方式是:是否可以从命令行启动具有多个窗格的屏幕,每个窗格都运行自己的命令。

答案1

这个问题已经以不同的形式提出,但我将在适当的地方引用它们。

首先附加到现有屏幕或根据需要创建新屏幕, 用这个:

screen -D -R -S namedscreen

或者,您可以测试命名屏幕是否存在,如果不存在则创建一个(分离的):

screen -S name -X select . || screen -dm -S name

对于您想要的其余脚本,您可以创建窗口并向现有屏幕会话发送命令

screen -dm -S name -t window0
screen  -S name -X screen -t window1
screen  -S name -X screen -t window2
screen  -S name -p 0 -X stuff $'command 1\r'
screen  -S name -p 1 -X stuff $'command 2\r'
screen  -S name -p 2 -X stuff $'command 3\r'

最后,请参阅另一篇文章,了解如何使用tmux

相关内容