在分离ssh + tmux会话时,Python代码崩溃,“无法连接到X服务器”

时间:2016-10-03 20:49:08

标签: python ssh tmux

我在远程计算机上运行Python代码(我将其插入),然后使用Tmux。代码运行良好UNTIL我断开远程机器。我通过Tmux连接的重点是,即使我没有连接到远程机器,代码也会继续运行。当我稍后重新连接时,我收到错误消息:

: cannot connect to X server localhost:11.0

有谁知道为什么会发生这种情况或我如何阻止它?

1 个答案:

答案 0 :(得分:4)

cannot connect to X server localhost:11.0

...意味着您的代码正在尝试(并且失败)连接到X服务器 - 一个GUI环境 - 可能是通过您的SSH会话转发的。 tmux为终端应用程序提供会话连续性;它无法模拟X服务器。

如果你想阻止它完全建立任何GUI连接(也许,如果这样编写软件,甚至尝试编写),请在运行代码之前取消设置DISPLAY环境变量。< / p>

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

如果您想创建一个仍然存在的 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-run unreliable when multiple instances invoked in parallel,了解有关xvfb-run中存在的错误的说明,以及可用的修复程序。

如果你想要一个X服务器,你可以实际分离并重新连接到以后,让你运行具有与tmux为你提供的终端应用程序类似功能的GUI应用程序,考虑使用X11vnc或类似工具。