问题
我正在使用一个计算密集型应用程序需要X11 运行。我想在远程服务器上运行它(显然正在运行 X11)。
我不需要转发X11,我只需要它在服务器上运行。
更多细节
如果我从服务器运行应用程序(即我使用物理连接到计算机的键盘),那么一切正常。我的问题是我想远程启动此应用程序(通过 SSH 连接),因为我无法始终物理访问服务器。
我不完全确定它是如何工作的,但是当我运行以下命令时从机器(即使用其键盘):
$ xhost +
然后我就可以$ DISPLAY=:0 ./run-my-app
通过 SSH 毫无问题地运行我的应用程序 ( )。现在,我无法xhost +
通过 SSH 运行,无论如何,从安全性角度来看,这听起来是一个坏主意。
如果我不运行xhost +
,我会得到以下输出:
未指定协议
xauth: (argv):1: 无法打开显示“:0”。
总之,看起来有一些安全功能(访问控制)阻止我在 X11 上远程运行该应用程序。但重点是,我不想发生比从服务器启动应用程序(键盘连接到物理机)时发生的情况更多的事情;我只想远程启动/停止它,而不进行任何转发。
有没有办法做到这一点?
类似问题
它看起来类似于服务器上的 X11 不转发和如何在 Linux 上无头运行 Firefox(即不需要 libgtk-x11-2.0.so.0)?,但在这些情况下他们可以使用虚拟服务器,例如Xvfb,这对我来说不起作用。而且,我的服务器上确实运行着一个 X 服务器,而且我确实需要它。
答案1
窃取正在运行的会话环境的副本
pid="`pgrep process_name\$ -U $USER`"
env `tr '\0' ' ' < "/proc/$pid/environ"` program_name
合适的值process_name
:您知道在您的 X11 环境中运行的东西