如何使用 x2go 退出后保持程序运行?

如何使用 x2go 退出后保持程序运行?

我必须使用 x2go 在共享工作站上运行一些程序。

这些程序需要相当长的时间,我希望:

  1. 在 x2go 中启动程序
  2. 登出
  3. 过一段时间再用 x2go 连接到机器,查看程序的结果

因此,最后,我想做的事情与 做的事情类似screen。但是,注销似乎会终止所有正在运行的程序。

该程序使用 Mathematica,特别是它的一些动态内置函数,因此我需要访问 X 服务器才能与 GUI 交互,但这screen不是一种选择。

如果需要,我的电脑和工作站都使用 Ubuntu。命令cat /etc/os-release给出:

我的电脑

NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

工作站

PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

答案1

无法按照您建议的方式完成:

正如您所发现的,当 GUI 会话结束时,显示服务器将终止(而不是暂停或隐藏),并且所有子作业也将终止。该行为是注销的基础。

即使你做了一些花哨的事情(比如nohup)让你的窗口保持活动,它也会立即出错,因为不再有显示。

面临这种情况的开发人员通常会构建两个相互通信的程序:一个程序不需要显示,因此可以使用终端多路复用器(screentmux)或简单地作为 systemd 服务、cronjob、atjob 等持续运行。第二个程序为长期运行的无头作业提供间歇性图形界面。

您似乎有两种选择:保持您的 GUI 会话处于活动状态直到完成,或者重写您的代码以使其不需要始终显示。

相关内容