unRAIDサーバーでMinecraftサーバーを実行しようとしています。
サーバーはシェルで実行され、そこに座って入力を待ちます。停止するには、「stop」と入力してEnterキーを押す必要があります。そうすると、世界が保存されて正常に終了し、シェルに戻ります。 NASボックスにtelnetで接続して実行すればすべて機能しますが、ボックス上で直接実行したいと思います。
これは私が最初の試みとして以前に持っていたものです:
#define USER_SCRIPT_LABEL Start Minecraft server
#define USER_SCRIPT_DESCR Start minecraft server. needs sde2 mounted first
cd /mnt/disk/sde2/MCunraid
screen -d -m -S minecraft /usr/lib/java/bin/java -Xincgc -Xmx1024M -jar CraftBukkit.jar
MCunraidは、Craftbukkit.jarやすべてのワールドファイルなどがあるフォルダーです。その画面行を直接入力すると、画面が切り離されてセットアップが実行され、サーバーが起動します。スクリプト内からその行を実行すると、画面が設定されていないようです
サーバーを停止するには、STOPと「入力」して、Enterキーを押す必要があります。私のアプローチは
screen -S minecraft -X stuff "stop $(echo -ne 'r')"
画面「minecraft」にテキストs-t-o-pとキャリッジリターンを送信します。ただし、コマンドラインに直接入力しても機能しません。ただし、「screen -r」を実行すると、サーバーが実行されている画面が表示されたら、「stop」と入力すると、サーバーが適切にシャットダウンします。
サーバーは、Telnetで接続して手動で実行すると正常に動作します。リモートのコンピューターから接続せずに、サーバーを実行する必要があります。
承認された回答:
問題の少なくとも一部を解決できます:なぜstop
一部が機能していません。実験的に、デタッチモードでScreenセッションを開始する場合(screen -d -m
)、ウィンドウが選択されていないため、入力は後でscreen -X stuff
で送信されます 失われただけです。キーストロークをウィンドウ0に送信することを明示的に指定する必要があります(-p 0
)。なんらかの理由でそのScreenセッションで他のウィンドウを作成した場合に備えて、これはとにかく良い考えです。
screen -S minecraft -p 0 -X stuff "stop^M"
(画面変換^M
コントロールする-Enterによって送信される文字であるM キー。)
スクリプトからセッションを開始する際の問題は、メニュー解除に関連している可能性があります。
関連:Windows 8でアイドリング後にウェルカム画面/ロック画面が表示されないようにするにはどうすればよいですか?