Ubuntu 15.10을 실행하는 Kimsufi에서 임대한 VPS에서 "Insurgency: Modern Infantry Combat" 게임용 게임 서버를 실행하려고 합니다.
이전에 Wine 및 Xvfb에 대한 경험이 있지만 지금은 이러한 문제를 어떻게 진행하고 해결해야 할지 잘 모르겠습니다. 개발자가 2019년에 새로운 Insurgency 게임을 출시하는 바람에 게임 서버의 Linux 버전이 심각하게 손상되고 복구할 수 없어서 VPS에서 Windows 기반 게임 서버를 실행하려고 하기 때문에 Wine과 Xvfb를 사용해야 합니다. 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가 실행 중이면 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