web-dev-qa-db-ja.com

Xvfb -screen->(EE)リスニングソケットを確立できません

Ubuntu 15.10を実行しているKimsufiからレンタルしたVPSで、ゲーム「Insurgency:ModernInfantryCombat」のゲームサーバーを実行しようとしています。

以前にWineとXvfbをいじった経験がありますが、現在、これらの問題を継続して解決する方法がわかりません。 Linuxベースのゲームサーバーがひどく壊れていて、開発者が新しいInsurgencyゲームをリリースし直したために修正される可能性がないため、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.

ここで何をすべきかわからない。他に情報が必要な場合はお知らせください。

2
user193839

(EE)リスニングソケットを確立できません-Xサーバーがまだ実行されていないことを確認してください(EE)fixme:exec:Shell_executeフラグは無視されます:

Xfvb(または別のXサーバー)がすでにディスプレイ:1で実行されているか、前回の実行で残ったロックファイルがいくつかあります。

ls -l /tmp/.X*を参照し、プロセスリストps aux | grep -i xvfbを確認してください。

別のXが実行されている場合は、それを強制終了できます。または、X1*ロックファイルを手動で削除します。または、別のディスプレイをXvfb(Xvfb :123)に選択します。

開始スクリプトは、終了時にXサーバーを強制終了する必要があります。それ以外の場合は、Xvfbセッションがすでに実行されている場合は、それを再利用することもできます。

[〜#〜] fyi [〜#〜]このような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
4
rudimeier