我正在尝试在许多 Ubuntu 服务器上启动一个不能无头的程序。我需要每隔几天重新启动一次,所以我正在寻找一种方法来轻松做到这一点。我在一台 Linux 机器上安装了 VNC 服务器,我可以通过连接到该服务器来启动我的程序,但问题是需要手动打开 TightVNC,然后打开 TightVNC GUI 内的终端来运行命令来启动程序。
理想情况下,我想要的是在本地 Windows 计算机的终端中写入一行,以在我的服务器上启动该程序,然后即使我的本地计算机关闭,我仍然可以在服务器上运行该程序。
答案1
您需要运行 GUI 应用程序还是纯文本程序?
你提到打开一个终端,所以我认为它是一个文本程序。如果是这样的话,您不需要使用 VNC,您可以使用ssh
.
如果您需要程序在 ssh 连接中断时也继续运行,您可以nohup
在终端多路复用器(如tmux
或 )中使用或运行它screen
。如果 systemd 配置为在注销时终止所有用户进程,您可能需要重新配置它:
- 编辑
/etc/systemd/logind.conf
- 添加一行
KillUserProcesses=no
(logind.conf 中可能已经有注释掉的行 - 您只需取消注释即可) - 保存并退出
- 跑步
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 可以很好地工作。