多个选项卡和 Bash 脚本
Multiple tabs and Bash scripting
我试图打开多个选项卡并在每个选项卡中执行一系列命令。假设我打开 3 个选项卡 tab1、tab2、tab3。然后在每个选项卡中我想执行以下操作:
ssh user@address(已设置公钥身份验证并
因此无需输入密码)
启动 python 脚本 (python some.py)
执行命令后保持选项卡打开以查看输出。
我浏览了一些线程并为 Bash 脚本有了一个粗略的大纲。
#!/bin/bash
echo "Script running"
gnome-terminal -e "bash -c \"ssh user@address; uname -a; exec bash\""
当我运行上面的脚本时,一个新的终端打开,我可以看到我已经ssh-ed到目标地址但是另一个命令uname -a
没有执行。
我想在此基础上实现以下内容:
打开多个选项卡和 运行 命令。例如: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\""
等待 python 文件之一开始执行后再打开
另一个选项卡并为另一个 python 文件重复该过程。
还有没有更好的方法来实现相同的任务?
以上代码片段来自this thread。
您应该考虑为此使用 screen
或 tmux
或类似的终端多路复用器。
用法示例:
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)才会终止你的程序。
我试图打开多个选项卡并在每个选项卡中执行一系列命令。假设我打开 3 个选项卡 tab1、tab2、tab3。然后在每个选项卡中我想执行以下操作:
ssh user@address(已设置公钥身份验证并 因此无需输入密码)
启动 python 脚本 (python some.py)
执行命令后保持选项卡打开以查看输出。
我浏览了一些线程并为 Bash 脚本有了一个粗略的大纲。
#!/bin/bash
echo "Script running"
gnome-terminal -e "bash -c \"ssh user@address; uname -a; exec bash\""
当我运行上面的脚本时,一个新的终端打开,我可以看到我已经ssh-ed到目标地址但是另一个命令uname -a
没有执行。
我想在此基础上实现以下内容:
打开多个选项卡和 运行 命令。例如:
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\""
等待 python 文件之一开始执行后再打开 另一个选项卡并为另一个 python 文件重复该过程。
还有没有更好的方法来实现相同的任务?
以上代码片段来自this thread。
您应该考虑为此使用 screen
或 tmux
或类似的终端多路复用器。
用法示例:
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)才会终止你的程序。