当前位置: 首页 > 面试题库 >

如何从X会话外部(例如从控制台或SSH)运行X程序

范凡
2023-03-14
问题内容

在没有人登录控制台的情况下,如何运行X应用程序并将其显示在该X会话上?假设我要么是root用户,要么是登录的同一用户,所以原则上我有权这样做。但是我如何说服X呢?

这种情况的一些示例:

  • 使用SSH登录并运行在远程计算机屏幕上显示的程序( 不是 通过SSH隧道传输的-完全不同)
  • 一项cron作业,通过ImageMagick的import命令获取X会话的屏幕截图
  • 运行击键记录器以进行审核

这是直接从无窗口Linux终端启动的LaunchOpenGL应用程序的简单版本


问题答案:

简短的答案是,您必须设置DISPLAY环境变量,然后应用程序将运行。

长答案是我们拥有Xauth,除非您在同一台计算机上以同一用户身份运行,否则除非将Xauth凭据从运行X服务器的帐户导出到运行X的帐户,否则可能无法正常工作客户。ssh -X为您解决这个问题,这就是为什么它很棒,但是手动过程涉及xauth extract - $DISPLAY在X服务器帐户上运行并将数据馈送到xauth merge -客户端帐户上。(警告:数据是二进制的。)

在现代Linux系统上,在0处有一个X会话,并且X11授权数据文件始终是,$HOME/.Xauthority因此您通常可以设置两个环境html" target="_blank">变量,例如在Bash中:

export XAUTHORITY=/home/$your_username/.Xauthority
export DISPLAY=':0'


 类似资料:
  • 我有一个 .NET Core 控制台应用程序并运行了 。但是,我不知道如何从命令行运行应用程序。有什么提示吗?

  • 问题内容: 我是Swift的新手,我没有发现任何有关使用Swing语言执行外部程序或访问外部进程的信息。 在语言开发的当前阶段是否可以做,还是应该改用Objective-C? 也许我的Swift程序中可以使用一些Objective-C库? 谢谢。 问题答案: 您可以使用运行外部程序。例如,从Circle和Square:

  • 问题内容: 我试图在我网站的另一部分访问Magento客户会话。 这家商店本身就像一个魅力,但是我试图在test.php中确定是否有客户登录,所以我可以显示他的名字以及他购物车的链接。 到目前为止, test.php的 内容: 我不断得到 布尔(假) 返回。我已在domain.com/shop/登录到Magento,因此应该为“ true”。 我忘记了什么吗? 问题答案: 我建议检查Magento

  • 我在谷歌播放器上看到一些应用程序,可以让你为Android5.0版录制整个屏幕。我已经深入Android参考了一段时间,但找不到正确的方法。有人能给我一个小提示吗? 另外,我知道Android系统不会给你全屏缓冲区访问的版本

  • 所以我有一个Laravel控制器: 目前,我正在使用artisan(在引擎盖下运行PHP的内置开发Web服务器)运行应用程序: 我想将控制台消息记录到artisan进程的管道中。

  • 问题内容: 如何与Socket.io 1.0和Express 4.x共享会话?我使用Redis商店,但我认为这没有关系。我知道我必须使用中间件来查看cookie和获取会话,但是不知道如何。我搜索了但找不到任何工作 问题答案: 解决方案非常简单。它只是没有很好的记录。也可以通过如下所示的小型适配器将快速会话中间件用作Socket.IO中间件: 这是Express 4.x,Socket.IO 1.x和