多个选项卡和 Bash 脚本

Multiple tabs and Bash scripting

我试图打开多个选项卡并在每个选项卡中执行一系列命令。假设我打开 3 个选项卡 tab1、tab2、tab3。然后在每个选项卡中我想执行以下操作:

我浏览了一些线程并为 Bash 脚本有了一个粗略的大纲。

#!/bin/bash

echo "Script running"
gnome-terminal -e "bash -c \"ssh user@address; uname -a; exec bash\""

当我运行上面的脚本时,一个新的终端打开,我可以看到我已经ssh-ed到目标地址但是另一个命令uname -a没有执行。

我想在此基础上实现以下内容:

  1. 打开多个选项卡和 运行 命令。例如:gnome-terminal --tab -e "bash -c \"ssh user@address; python file1.py; exec bash\"" -tab -e "bash -c \"ssh user@address; python file2.py; exec bash\""

  2. 等待 python 文件之一开始执行后再打开 另一个选项卡并为另一个 python 文件重复该过程。

还有没有更好的方法来实现相同的任务?

以上代码片段来自this thread

您应该考虑为此使用 screentmux 或类似的终端多路复用器。

用法示例:

screen -d -m bash -c 'ls; bash'

启动屏幕会话,其中执行 ls,然后 shell 开始,然后

screen -X screen bash -c 'date; bash'

在现有的屏幕会话中创建一个新的window,运行date然后在其中启动一个shell在那 window.

请注意,这些程序是 运行,您不会立即在控制终端上看到它们的输出。然后您可以使用

附加到屏幕会话
screen -x

它将您连接到 运行ning 会话并将显示其中一个屏幕 windows(您的两个 运行ning 程序的虚拟终端)。输入 Ctrl-A n 将通过 windows, Ctrl-A d 将再次分离您,留下程序 运行ning,因此您稍后可以使用 screen -x.

附加

您可以从多个位置(例如从两个不同的 Gnome 终端)连接到同一个 运行ning windows。两者将显示相同的内容。

使用 screen 的另一个好处是您可以注销并且程序保持 运行ning。如果您稍后再次登录,您仍然可以附加到 运行ning 会话。

只有直接攻击,如重启、终止信号或交互(如在连接时按 Ctrl-C)才会终止你的程序。