![Xvfb -screen --> (EE) 无法建立任何侦听套接字](https://linux22.com/image/95912/Xvfb%20-screen%20--%3E%20(EE)%20%E6%97%A0%E6%B3%95%E5%BB%BA%E7%AB%8B%E4%BB%BB%E4%BD%95%E4%BE%A6%E5%90%AC%E5%A5%97%E6%8E%A5%E5%AD%97.png)
我正在尝试在从 Kimsufi 租用的运行 Ubuntu 15.10 的 VPS 上运行游戏“Insurgency: Modern Infantry Combat”的游戏服务器。
我之前有过使用 Wine 和 Xvfb 的经验,但现在我不确定如何继续并解决这些问题。我需要使用 Wine 和 Xvfb,因为我试图在我的 VPS 上运行基于 Windows 的游戏服务器,因为 Linux 版本的游戏服务器严重损坏,并且由于开发人员在 2019 年发布了新的 Insurgency 游戏而无法修复。 2014年。
这是我为服务器所做的启动脚本。我必须这样做,因为 VPS 没有物理“屏幕”,而且我不知道如何让它使用我自己的桌面作为“屏幕”来显示内容。
#!/bin/bash
Xvfb :1&
export DISPLAY=:1
wine start srcds.exe -console -secure -game insurgency +map ins_karam +rcon_password RdbtTc5CR4QrjZiQirhp -strictportbind -port 27050 +clientport 27150 +tv_port 27155 -maxplayers 32 +sv_master_legacy_mode 0 &
这就是每次我尝试启动服务器时我都会遇到的问题。
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
(EE)
Fatal server error:
(EE) Cannot establish any listening sockets - Make sure an X server isn't already running(EE)
fixme:exec:SHELL_execute flags ignored: 0x00000100
fixme:keyboard:X11DRV_LoadKeyboardLayout L"00000409", 0000: stub!
fixme:ver:GetCurrentPackageId (0x33d720 (nil)): stub
fixme:ver:GetCurrentPackageId (0x33d0dc (nil)): stub
fixme:ver:GetCurrentPackageId (0xf09e03c (nil)): stub
fixme:ver:GetCurrentPackageId (0xf29e9e8 (nil)): stub
fixme:ver:GetCurrentPackageId (0x33d488 (nil)): stub
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
fixme:advapi:EventRegister {47a9201e-73b0-42ce-9821-7e134361bc6f}, 0xfde5b30, 0xfe1ab30, 0xfe1ab28
fixme:advapi:EventRegister {58a9201e-73b0-42ce-9821-7e134361bc70}, 0xfde5b30, 0xfe1ab68, 0xfe1ab60
fixme:advapi:EventRegister {3fa9201e-73b0-43fe-9821-7e145359bc6f}, 0xfde5b30, 0xfe1aaf8, 0xfe1aaf0
fixme:advapi:EventRegister {1432afee-73b0-42ce-9821-7e134361b433}, 0xfde5b30, 0xfe1aba0, 0xfe1ab98
fixme:advapi:EventRegister {4372afee-73b0-42ce-9821-7e134361b519}, 0xfde5b30, 0xfe1abd8, 0xfe1abd0
err:secur32:SECUR32_initSchannelSP TLS library not found, SSL connections will fail
err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
不知道在这里做什么。如果你们需要任何其他信息,请告诉我。
答案1
(EE) 无法建立任何侦听套接字 - 确保 X 服务器尚未运行(EE) fixme:exec:SHELL_execute 标志被忽略:
显示 :1 上已经有一个 Xfvb(或另一个 X 服务器)正在运行,或者有一些上次运行留下的锁定文件。
查看ls -l /tmp/.X*
并查看您的进程列表ps aux | grep -i xvfb
。
如果另一个 X 正在运行,您可以杀死它。或者手动删除X1*
锁定文件。或者为您选择另一个显示器 Xvfb ( Xvfb :123
)。
您的启动脚本应确保在退出时终止 X 服务器。否则,如果 Xvfb 会话已在运行,您也可以重新使用它。
供参考我有一个Xvfb/wine
在生产中运行的脚本。虽然也不完美,但多年来它总是通过 cron 运行没有任何问题。这里是:
#!/bin/bash
VNC_PORT=29
export DISPLAY=":${VNC_PORT}.0"
/usr/bin/Xvfb :${VNC_PORT} -screen 0 1024x768x8 -fbdir /var/tmp &
XVFB_PID=$!
# waiting for XServer established (or failure)
sleep 1
if test "${XVFB_PID}" != "$(jobs -p)" ;then
echo "error, Xvfb failed"
exit 1
fi
/usr/bin/wine **your command**
RET=$?
echo "wine returned '$RET'"
# waiting for shutdown all wine stuff completely
sleep 2
kill $XVFB_PID
exit $RET