マインクラフト非公式フォーラム

本フォーラムでは多彩なサービスを提供しています。

利用方法は「Wiki」より確認できます。

ぜひご登録をお願いいたします!

Spigot 再起動のシェルスクリプト

No1!

新メンバー
毎朝AM6時に自動的にcronを使用してMinecraft Serverを再起動したいが再起動が掛からない。
再起動が掛からない原因が分からないのでご教示頂けると幸いでございます。

cron の実行形跡はアリ

■OSバージョン​

CentOS Linux release 7.9.2009 (Core)


■crontab​


SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
59 5 * * * root /home/minecraft/minecraft/restart.sh


■screen.sh​


#!/bin/bash

JARFILE=/home/minecraft/minecraft/paper-1.17.1-170.jar

screen -UAmdS minecraft java -Xmx8G -Xms8G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20
-XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -jar ${JARFILE} nog
ui


■restart.sh​


#!/bin/bash

WAIT=60
STARTSCRIPT=/home/minecraft/minecraft/screen.sh
SCREEN_NAME='minecraft'

screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "say '${WAIT}'秒後にサーバーを再起動します。\015"'
screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "say すぐに再接続可能になるのでしばらくお待ち下さい。\015"'

sleep $WAIT
screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "stop\015"'

while [ -n "$(screen -list | grep -o "${SCREEN_NAME}")" ]
do
screen -XS ${SCREEN_NAME} quit
 sleep 1
done

$STARTSCRIPT
 
Last edited:

tomo1560

管理者
Staff member
サーバ停止済みで以下のコードを実行時
Bash:
sudo -u minecraft screen -list
この通りに表示されますか?
Code:
No Sockets found in /var/run/screen/S-minecraft.
表示される場合停止確認を行なっているここの処理でminecraftがGrepに引っかかってしまう為、サーバの停止待ちのループで止まります
Bash:
while [ -n "$(screen -list | grep -o "${SCREEN_NAME}")" ]
なので実行ユーザ名を変更するか、以下の通りに修正すれば再起動されると思います
Bash:
while [ -n "$(screen -list | grep -oF ".${SCREEN_NAME}")" ]
 
Upvote 0

No1!

新メンバー
サーバ停止済みで以下のコードを実行時
Bash:
sudo -u minecraft screen -list
この通りに表示されますか?
Code:
No Sockets found in /var/run/screen/S-minecraft.
表示される場合停止確認を行なっているここの処理でminecraftがGrepに引っかかってしまう為、サーバの停止待ちのループで止まります
Bash:
while [ -n "$(screen -list | grep -o "${SCREEN_NAME}")" ]
なので実行ユーザ名を変更するか、以下の通りに修正すれば再起動されると思います
Bash:
while [ -n "$(screen -list | grep -oF ".${SCREEN_NAME}")" ]

レスありがとうございます。
ご教示頂きました通り、
Code:
sudo -u minecraft screen -list
 

上記コマンド実行時、

Code:
No Sockets found in /var/run/screen/S-minecraft.

と表示されることを確認致しました。

Code:
while [ -n "$(screen -list | grep -oF ".${SCREEN_NAME}")" ]

に書き換えてみましたが結果は変わらず再起動されませんでした。
他に考えられる原因等ございましたらご教示くださいませ。
 
Upvote 0

fuyutsuki

メンバー
wiki編集者
Spigotのシャットダウンまではされますか?それともシャットダウンすらかからない状況でしょうか?
 
Upvote 0
Top