当显示器只是噪声时,DISPLAY的/ dev / null等价物

时间:2009-05-07 13:44:26

标签: null xserver

我正在运行一个java应用程序,它创建了一些正在执行的操作的可视化显示,而它正在执行它。但是,我想在一个没有要附加的显示的脚本中运行它。在当前环境中,甚至没有设置DISPLAY环境变量。我试着简单地将我的DISPLAY设置为:0.0。但那不存在。我真的不在乎显示器。我只是希望应用程序以静默方式处理文件。

由于我不能只关闭显示器(不是我的应用程序),我只是试图绕过显示的需要。

我可以将DISPLAY发送到黑洞吗?等同于/ dev / null?

我在网上搜索了一下,但是我能想到要使用的词:“display”“null”“disregard”等都是两个通用的,让我得到答案。

这是一个较大的脚本的中间部分,因此我希望输出的其余部分可以使用stdout。

5 个答案:

答案 0 :(得分:14)

有一个名为Xvfb的无头X服务器。它基本上是你需要的,因为它接受X客户端但基本上不对它们的数据做任何事情。从该链接页面(稍微解释):

  

Xvfb是X虚拟帧缓冲区,是实现X11显示服务器协议的显示服务器。

     

与其他显示服务器相比,Xvfb在内存中执行所有图形操作,而不显示任何屏幕输出。

     

从客户端的角度来看,它的行为与任何其他X显示服务器完全相同,可以根据需要提供请求并发送事件和错误。但是,没有显示输出。

     

此虚拟服务器不需要运行它的计算机具有屏幕或任何输入设备。只需要一个网络层。

如果你找不到,那么另一种可能性是使用带有完整CygWin安装的备用PC。 CygWin带有一个完整的X服务器,您可以将您的应用程序连接到(并忽略它)。您甚至可以将其设置为公司/ dev / null DISPLAY。

但我先看看Xvfb。

答案 1 :(得分:2)

如果是java程序,您可以使用无头模式运行应用程序。

尝试使用-Djava.awt.headless=true参数运行它,如果它是一个jar文件:

java -Djava.awt.headless=true -jar jarfile.jar

More about headless mode...

答案 2 :(得分:1)

如上所述,您可以使用Xvfb。这样,您将永远不会看到输出(您可以使用工具来截取屏幕截图)。

http://en.wikipedia.org/wiki/Xvfb http://packages.debian.org/sid/xvfb

或者您可以设置VNC服务器。在Linux下,VNC服务器实现为可以通过VNC访问的特殊X服务器,而不是在本地监视器上显示。这为你提供了一个无头的X服务器,你还可以通过VNC连接它,以防你需要看看发生了什么。

http://www.tightvnc.com/vncserver.1.html

vncserver是(紧)VNC的一个很好的包装脚本,这使得启动VNC服务器变得轻而易举。大多数发行版应该默认安装它。

答案 3 :(得分:1)

简短回答,使用:

xvfb-run JAVA_COMMAND_LINE

根据您的Linux版本和风格,xvfb-run中可能有one line you have to change来运行所有内容。

答案 4 :(得分:0)

您可以在目标计算机上运行VM吗?然后你可以将你的DISPLAY设置为那个。或者你可以尝试vnc(目前在一台不允许这样做的机器上,或者我试试吧......)。