【问题标题】:Running Linux GUI/GTK app over SSH (JSch) on remote server在远程服务器上通过 SSH (JSch) 运行 Linux GUI/GTK 应用程序
【发布时间】:2018-05-11 15:26:54
【问题描述】:

我正在尝试运行一个 GUI 应用程序,该应用程序会触发从 Windows localhost 到 SUSE Enterprise Sever 12 版本的其他 GUI 应用程序。

我想使用 JSch 触发应用程序并让它在远程机器上运行,即 SuSe ,并且不想将其转发到 Windows。

使用普通.sh文件触发时,应用程序报错

无法初始化gtk+,显示设置是否正确?

如何在远程机器上运行应用程序,不管是后台还是前台!

【问题讨论】:

  • 当我从 linux 连接到其他 linux 机器时,我打电话给ssh -X。尝试阅读this

标签: linux ssh gtk jsch


【解决方案1】:

我认为你不能(或不容易)。如果应用程序以需要“显示”的方式实现,则没有它就无法运行它。请注意,当您通过 SSH(即由 SSH 守护程序启动)执行应用程序时,它不知道连接到远程机器(服务器)的物理显示器(如果有的话)。

有一种方法可以运行应用程序,使其不需要“显示”,但我们无法帮助您,因为我们不知道应用程序。

虽然一般来说,*nix 应用程序往往需要“显示”,当它们在具有 TTY 的会话中运行时。确保您使用“exec”通道(而不是“shell”)执行应用程序,并且不要调用 setPty method

但如果应用程序是真正的 GUI 应用程序,即使这样也无济于事。


当然,您可以以某种方式模拟显示,但这超出了我的知识范围。为此,您必须使用不同的标签提出不同的问题(不是关于/,而是关于//)。

【讨论】:

  • 该应用程序是一个真正的 GUI 应用程序,它模拟调制解调器的行为。不知何故,我能够在 Windows-Windows 设置中做同样的事情,我从一台机器触发应用程序,它在后台另一台机器上的会话 0 上运行。 *nix 系统中是否有“会话 0 隔离”之类的东西?
  • 我相信Windows和Linux在这方面有很大的不同。在 Windows 中,GUI 是系统/内核的一部分(因此 Windows 可以假装应用程序有“显示”,即使实际上没有)。在 Linux 中,GUI 不是内核的一部分。系统和 SSH 守护进程都不知道。所以他们无法帮助应用程序模拟它。
  • 其实“session 0 isolation”在Linux中是很自然的。 - 虽然它是后来才添加到 Windows 中的。这就是为什么 Windows 必须处理(允许)在 "session 0" 中运行 GUI 应用程序以免破坏与需要 GUI 的现有服务的兼容性的原因之一。 - 相反,*nix 服务(守护程序)永远不会使用 GUI,因此无需支持在后台运行 GUI 应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 2018-02-25
  • 2011-09-25
  • 2013-05-04
  • 2014-08-17
  • 2013-11-22
相关资源
最近更新 更多