gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:25 25 4
gpt4 key购买 nike

我正在尝试创建一个非常简单的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com