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