在多个无法无头的 Linux 服务器上轻松启动程序的最佳方法是什么?

在多个无法无头的 Linux 服务器上轻松启动程序的最佳方法是什么?

我正在尝试在许多 Ubuntu 服务器上启动一个不能无头的程序。我需要每隔几天重新启动一次,所以我正在寻找一种方法来轻松做到这一点。我在一台 Linux 机器上安装了 VNC 服务器,我可以通过连接到该服务器来启动我的程序,但问题是需要手动打开 TightVNC,然后打开 TightVNC GUI 内的终端来运行命令来启动程序。

理想情况下,我想要的是在本地 Windows 计算机的终端中写入一行,以在我的服务器上启动该程序,然后即使我的本地计算机关闭,我仍然可以在服务器上运行该程序。

答案1

您需要运行 GUI 应用程序还是纯文本程序?

你提到打开一个终端,所以我认为它是一个文本程序。如果是这样的话,您不需要使用 VNC,您可以使用ssh.

如果您需要程序在 ssh 连接中断时也继续运行,您可以nohup在终端多路复用器(如tmux或 )中使用或运行它screen。如果 systemd 配置为在注销时终止所有用户进程,您可能需要重新配置它:

  1. 编辑/etc/systemd/logind.conf
  2. 添加一行KillUserProcesses=no(logind.conf 中可能已经有注释掉的行 - 您只需取消注释即可)
  3. 保存并退出
  4. 跑步systemctl daemon-reload

当然,以上所有操作都必须以 root 身份完成。

答案2

来自 EPEL,查看pdsh并行分布式 shell

================================================================================
 Package                Arch            Version             Repository     Size
================================================================================
Installing:
   pdsh                   x86_64          2.34-5.el7          epel          114 k
Installing for dependencies:
   pdsh-rcmd-ssh          x86_64          2.34-5.el7          epel           15 k


   man pdsh

   pdsh is a variant of the rsh(1) command. Unlike rsh(1), which runs com‐
   mands on a single remote host, pdsh can run multiple remote commands in
   parallel.  pdsh  uses a "sliding window" (or fanout) of threads to con‐
   serve resources on the initiating host while allowing some  connections
   to time out.

如果您在服务器之间设置 SSH 密钥以允许无密码登录,就像在头节点与其计算节点之间的集群中所做的那样,pdsh 可以很好地工作。

相关内容