linux - shell 脚本 : open multiple terminals and run commands?

标签 linux bash shell

我正在尝试创建一个非常简单的 shell 脚本来打开并运行我的程序的五个实例。对于批处理,我会做这样的事情:

@echo off
python webstore.py 55530
python webstore.py 55531
python webstore.py 55532
exit

这将打开三个终端并使用不同的命令行参数在每个终端上运行命令。我将如何使用在每个基于 unix 的平台上运行的 shell 脚本来创建相同的内容?我见过一些用于打开终端的命令,但它们是特定于平台的(gnome-termial、xterm 等等)。

最佳答案

How would I create the same with a shell script that runs on every single unix-based platform?

你的要求有点不合理。这样想:在 Windows 上,你总是在它的 Desktop Window Manager 中。 , 期间,您唯一的选择是 Powershell 和 cmd.exe。但是在 Linux 上,它有点复杂:

  1. 如您所说,您可以安装 rxvtxterm
  2. 但这不是唯一的问题——您可以使用任何窗口管理器。虽然这在这里并不重要,
  3. 您可以使用 Xorg 或 Wayland。继续,
  4. 您根本不能使用任何图形环境,例如在 Linux 控制台中运行一切!除非您使用诸如 fbtermtmux 之类的奇特程序,否则它几乎无法进行多任务处理,而且只能单独生成新窗口。
  5. 话虽如此,您甚至可能根本不使用这台计算机,因为您是通过 SSH 连接到它的。这里也没有远程窗口(除非你使用东西作为 X11 转发)。
  6. 最后,您可以使用 zshbashshfish 等,它们都自带自己的特质。

IMO 你最好的选择是在你的脚本中测试安装了哪些程序,或者围绕终端多路复用器(如 tmux)编写脚本并要求它安装在目标机器上。 tmux 的实际应用:

tmux in action
(来源:github.io)

(这将适用于 SSH、Linux 控制台或上述任何其他场景。)

但是,如果您不关心将要运行的命令的输出,您可以像这样将它们从当前终端 session 中分离出来:

command1 &>/dev/null &
command2 &>/dev/null &
command3 &>/dev/null &

请注意:

  1. 将并行运行命令。
  2. 不会向您显示任何输出。如果删除 &>/dev/null,每个命令的输出将相互交织,这可能不是您想要的。
  3. 关闭终端通常会杀死它的子进程,在这种情况下,这会杀死在后台运行的 command 实例。

上面提到的问题可以解决,但我认为这有点超出了这个答案的范围。

就我个人而言,我会选择 tmux 或分离解决方案,具体取决于我是否需要查看控制台输出。

关于linux - shell 脚本 : open multiple terminals and run commands?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36680847/

相关文章:

shell - 脚本问题

linux - 只读取 linux 文件中特定模式前的两个字符

linux - 尝试服务器的 DNS,但不断获取 8.8.8.8

bash - 如何在 .screenrc 中转义管道以便在启动时运行命令?

linux - 如何在 perl 中将 ulimit 设置为无限制?

bash - 使用awk识别多行记录和过滤

java - 使用命令行执行java程序时maven报错

python - 在 SSH/Paramiko 中使用不同的 shell 执行命令/脚本

Linux 搜索子字符串命令

linux - 如何在家庭服务器上安装 CentOS?