2024-05-18 10:16:59 发布
网友
我在一台远程机器上运行Python代码(我用ssh连接到该机器),然后使用Tmux。代码运行良好,直到我断开与远程计算机的连接。通过Tmux连接的整个要点是,即使没有连接到远程计算机,代码也会继续运行。稍后重新连接时,出现错误消息:
: cannot connect to X server localhost:11.0
有人知道为什么会发生这样的事吗?我怎么才能阻止?
cannot connect to X server localhost:11.0
…意味着您的代码正在尝试(并且失败)连接到一个X服务器——一个GUI环境——可能是通过SSH会话转发的。tmux为终端应用程序提供会话连续性;它不能模拟X服务器。
tmux
如果您想完全阻止它建立任何GUI连接(或者,如果软件是如此编写的,甚至不想尝试),请在运行代码之前取消设置DISPLAY环境变量。
DISPLAY
如果这会导致错误或异常,则生成的代码与导致以后错误的代码相同。
如果您想创建一个仍然存在的伪GUI环境,您也可以使用Xvfb来创建。
一些Linux发行版提供了xvfb-run包装器,可以自动为您设置:
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运行中存在的错误的注释,以及可用于该错误的修复。
如果您想要一个X服务器,您可以在以后实际分离并重新连接,让您运行与tmux为终端应用程序提供的功能类似的GUI应用程序,请考虑使用X11vnc或类似的工具。
…意味着您的代码正在尝试(并且失败)连接到一个X服务器——一个GUI环境——可能是通过SSH会话转发的。
tmux
为终端应用程序提供会话连续性;它不能模拟X服务器。如果您想完全阻止它建立任何GUI连接(或者,如果软件是如此编写的,甚至不想尝试),请在运行代码之前取消设置
DISPLAY
环境变量。如果这会导致错误或异常,则生成的代码与导致以后错误的代码相同。
如果您想创建一个仍然存在的伪GUI环境,您也可以使用Xvfb来创建。
一些Linux发行版提供了
xvfb-run
包装器,可以自动为您设置:顺便说一句,请参阅问题xvfb-run unreliable when multiple instances invoked in parallel以获取有关xvfb运行中存在的错误的注释,以及可用于该错误的修复。
如果您想要一个X服务器,您可以在以后实际分离并重新连接,让您运行与tmux为终端应用程序提供的功能类似的GUI应用程序,请考虑使用X11vnc或类似的工具。
相关问题 更多 >
编程相关推荐