我尝试在谷歌中搜索该主题,但没有任何显著结果。
我需要从终端启动一些 GUI 应用程序,但我不在乎这个应用程序向我显示什么。此外,我需要在不同的会话中启动此应用程序的几个实例。它与一些 GUI 自动化测试相连,所以我知道我想要什么,我正在寻找答案 :)。
我认为正确的步骤应该是:
- 初始化新的 X 窗口会话
- 获取我的新会话 ID
- 将其导出到环境变量(导出 DISPLAY:13.0)
- 运行我的应用程序
但是我在第一步就卡住了。这里有人遇到过类似的问题吗?
--- 编辑:1) 我不关心 GUI 输出 - 我只需要应用程序的 stdout 和 stderr。- 这就是为什么这个问题不是重复的 - 了解谷歌 :)。我不想将输出重定向到我自己的 GUI。
答案1
如果你不关心应用程序正在做什么,你可以用 xvfb 为其提供一个“虚拟”x 服务器:
Xvfb 提供了一个 X 服务器,可以在没有显示硬件和物理输入设备的机器上运行。它使用虚拟内存模拟哑帧缓冲区。该服务器的主要用途是服务器测试,但也发现了其他新用途,包括针对不寻常的深度和屏幕配置测试客户端、使用 Xvfb 作为后台渲染引擎进行批处理、负载测试、作为将 X 服务器移植到新平台的辅助手段,以及提供一种不引人注目的方式来运行那些实际上不需要 X 服务器但仍然坚持拥有一个的应用程序。
安装后,你可以使用以下命令启动它:
sudo Xvfb :10 -ac -screen 0 1024x768x24 &
它将在后台运行,然后您使用以下命令启动客户端:
DISPLAY=:10 your-client
答案2
简短的命令:
ssh -X <username>@<host> gedit &
从man ssh
-X Enables X11 forwarding.
This can also be specified on a per-host basis in a configuration file.
X11 forwarding should be enabled with caution. Users with the
ability to bypass file permissions on the remote host (for the
user's X authorization database) can access the local X11
display through the forwarded connection. An attacker may then
be able to perform activities such as keystroke monitoring.
/etc/ssh/sshd_config
在服务器端检查:sudo nano /etc/ssh/sshd_config
对于以下几行:
X11Forwarding yes X11UseLocalhost no
如果您进行了更改,请重新启动 ssh 服务器:
sudo service ssh restart
/etc/ssh/ssh_config
在客户端检查:sudo nano /etc/ssh/ssh_config
对于下面的几行
ForwardX11 yes ForwardX11Trusted yes
答案3
您只需在 ssh 会话中运行 export DISPLAY=:id#,程序就会在远程显示器上运行。一个简单的例子:
maythux@maythuxPC:~$ ssh testSSH@myServer
maythux@maythuxPC:~$ export DISPLAY=:0
maythux@maythuxPC:~$ gedit
现在gedit
将在名为 testSSH 的用户上运行显示
您可以将其全部缩短为单个命令:
ssh testSSH@myServer "DISPLAY=:0 nohup gedit"