我希望能够启动一个命令,比如 ./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'