【问题标题】:How can I launch multiple xterm windows and run a command on each, leaving each window open afterward?如何启动多个 xterm 窗口并在每个窗口上运行一个命令,然后让每个窗口都打开?
【发布时间】:2019-04-02 15:30:16
【问题描述】:

我很懒,我更喜欢电脑为我工作。我每天 ssh 到几台机器,所以我创建了一个简单的脚本来启动一些 xterm 窗口并将它们放置在我想要的位置(如你所见,我正在使用 bash):

#!/bin/bash
xterm -geometry 80x27+1930+0 &
xterm -geometry 80x27+2753+0 &
xterm -geometry 80x27+1930+626 &
xterm -geometry 80x27+2753+626 &

但是,我接下来要做的是转到第一个窗口并输入

ssh server_a

然后在第二个

ssh server_b

等等。我想做的是让我的脚本在每个 xterm 窗口中执行 ssh 命令,然后让这些窗口打开让我做我的工作。我已经看到了 xterm 的 -e 选项,但是在我执行命令后窗口关闭了。有没有办法做到这一点?

如果这是一个重复的问题,我深表歉意。我已经四处寻找,但没有任何运气。非常感谢!

【问题讨论】:

  • 您希望在退出 ssh 会话后窗口仍然存在吗?或者由于您通过 ssh 运行特定命令并且您希望 ssh 会话保持打开状态(因此窗口)而立即退出窗口?

标签: linux bash unix ssh xterm


【解决方案1】:

我希望看到一个更优雅的答案,但我想出的确实有效:

xterm -e bash -c 'echo foo; exec bash'

echo foo 替换为您选择的命令,一切顺利。

【讨论】:

  • 请注意,xterm 的(至少某些版本)还有一个-hold 选项,可防止窗口在命令终止后立即消失,因此您可以查看最终输出,如果那是什么需要...
【解决方案2】:

This answer 给出了迄今为止我见过的最好的答案之一。在 shebang 或执行终端时使用 bash --init-file 标志:

#!/bin/bash --init-file
commands to run

...并将其执行为:

xterm -e /path/to/script
# or
gnome-terminal -e /path/to/script
# or
the-terminal -e bash --init-file /path/to/script/with/no/shebang

我对@9​​87654325@ 选项唯一真正的抱怨是,如果在exec bash 之前执行的命令长时间运行并且用户中断它(^C),它不会运行shell。使用 --init-file 选项,shell 会继续运行。

另一个选项是来自 OpenWin 项目的cmdtool

/usr/openwin/bin/cmdtool -I 'commands; here'
# or
/usr/openwin/bin/cmdtool -I 'commands; here' /bin/bash

... 其中cmdtool 将通过-I 传递的命令注入从进程,就好像它是由用户键入的一样。这具有将执行的命令留在 shell 历史记录中的效果。

【讨论】:

    【解决方案3】:

    另一种选择是使用 gnome 终结器。这会以交互方式创建和定位终端,您可以设置每个终端以在终结器首选项中运行命令。

    还使用键绑定实现了许多额外的技巧,例如移动、旋转、最大化/最小化包含终止符窗口中的终端

    见:https://superuser.com/a/610048

    【讨论】:

    • 不知道他们为什么不赞成你,因为这是这类工作的正确答案。
    【解决方案4】:

    “ClusterSSH 通过单个图形控制台窗口控制多个 xterm 窗口,以允许通过 ssh 连接在多个服务器上交互运行命令”

    https://github.com/duncs/clusterssh/wiki

    $ cssh server_a server_b
    $ command
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-19
      • 2021-07-09
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多