Xvfb -screen --> (EE) 无法建立任何侦听套接字

Xvfb -screen --> (EE) 无法建立任何侦听套接字

我正在尝试在从 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

相关内容