私はシンプルなMinecraftサーバーを運営しています。私はしばらく前にGnu画面を自動的に生成し、そのサーバーを起動するUbuntu用のスクリプトを作成しました。私はDebianを使って新しいサーバーを購入することにしました。今、何らかの理由でスクリプトが実行されず、その理由がわかりません!
sleep 5
screen -dmS mc
sleep 1
screen -p 0 -S mc -X stuff "cd /home/server/Desktop/ServerSoftware/Minecraft/modpacks^AgrarianSkiesHQ^3_1_1^AgrarianSkiesHQServer"
sleep 1
screen -p 0 -S mc -X eval "stuff \015"
sleep 1
screen -p 0 -S mc -X stuff ./ServerStart.sh
sleep 1
screen -p 0 -S mc -X eval "stuff \015"
仕組み:
- 最小化されたGNU画面を開始
- ディレクトリをMinecraft Serverディレクトリに変更します。
- サーバーの起動
デフォルトでは機能しないのは、画面を作成して画面から切り離すことです。しかし、画面を復元するときに何も入力するには、Ctrl + cを押す必要があります。 "cd"コマンドは送信されず、./StartServer.shも送信されません。
CD行に「^」が必要です。端末でコマンドをテストしましたが、必要に応じて動作します。
答え1
^
制御文字シーケンスが導入されたため、スクリプトは機能しません。これら2つの文字は+文字^A
で埋められており、bashはそれを行の先頭に移動するコマンドとして解釈します。代わりにそれを使用する必要があります。CtrlA\^
screen -p 0 -S mc -X stuff 'cd /home/server/Desktop/ServerSoftware/Minecraft/modpacks\^AgrarianSkiesHQ\^3_1_1\^AgrarianSkiesHQServer^M'
screen -p 0 -S mc -X stuff './ServerStart.sh^M'
画面変更ログでこの動作が変更されたことを示す履歴が見つかりませんが、スクリプトが以前のシステムで実行されている場合は変更された可能性があります。