2016-10-03 41 views
2

我运行在远程计算机(我ssh到),然后用TMUX上Python代码时“不能连接到X服务器”。代码运行良好,直到我从远程机器断开连接。我通过Tmux进行连接的重点在于,即使我没有连接到远程机器,代码也能继续运行。当我后来重新连接,我有错误消息:Python代码崩溃与分离的ssh + TMUX会话

: cannot connect to X server localhost:11.0 

有没有人有一个想法,为什么这种情况正在发生或我怎么能阻止它?

+1

你能显示代码? – d33tah

+1

你有没有试过在后台运行? – pferate

+1

该错误是在其表面上很简单的 - 它使用本地X服务器。 –

回答

2
cannot connect to X server localhost:11.0 

...意味着你的代码试图(和失败)连接到一个X服务器 - 一个GUI环境 - 大概是被转发了你的SSH会话。 tmux为终端应用程序提供会话连续性;它无法模拟X服务器。


如果你想从能够做的一切任何GUI的连接停止它(或许,如果软件正是如此写,连尝试都)运行代码,未设置前DISPLAY环境变量。

如果这会导致错误或异常,代码生成是这是造成你以后的错误相同的代码。


如果你想创建一个假的GUI的环境,将仍然存在,你也可以这样做,用的Xvfb。

一些Linux发行版提供xvfb-run包装,自动设置此功能为您提供:

# prevent any future commands in this session from connecting to your real X environment 
unset DISPLAY XAUTHORITY 

# run yourcode.py with a fake X environment provided by xvfb-run 
xvfb-run python yourcode.py 

顺便说一句,看到存在于xvfb的运行错误笔记的问题xvfb-run unreliable when multiple instances invoked in parallel,并提供修复相同。


如果你愿意,你可以从它们中分离并重新连接以后,让你运行具有类似功能的GUI应用程序到什么TMUX为您提供了终端应用的X服务器,请考虑使用X11vnc或类似的工具。

+0

非常有用的感谢。我不知道为什么我的代码甚至试图建立一个GUI连接,因为我不要求它显示()任何东西。但现在我知道问题出在哪里,我可以试验一下。谢谢! – user1551817

+0

啊。通常,初始化GUI库足以尝试连接,而不需要显示任何窗口。 –