我正在运行一个java应用程序,它创建了一些正在执行的操作的可视化显示,而它正在执行它。但是,我想在一个没有要附加的显示的脚本中运行它。在当前环境中,甚至没有设置DISPLAY环境变量。我试着简单地将我的DISPLAY设置为:0.0。但那不存在。我真的不在乎显示器。我只是希望应用程序以静默方式处理文件。
由于我不能只关闭显示器(不是我的应用程序),我只是试图绕过显示的需要。
我可以将DISPLAY发送到黑洞吗?等同于/ dev / null?
我在网上搜索了一下,但是我能想到要使用的词:“display”“null”“disregard”等都是两个通用的,让我得到答案。
这是一个较大的脚本的中间部分,因此我希望输出的其余部分可以使用stdout。
答案 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
答案 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)
答案 4 :(得分:0)
您可以在目标计算机上运行VM吗?然后你可以将你的DISPLAY设置为那个。或者你可以尝试vnc(目前在一台不允许这样做的机器上,或者我试试吧......)。