見出し画像

[未検証]ChatGPTに30分間誰もログインしてなかったらマイクラサーバーを停止する方法聞いた。

返答内容

以下は、30分間誰もログインしていない場合に自動的にサーバーを停止するためのスクリプトの例です。

  1. minecraft_server_stop.shスクリプトを作成します。新しいテキストファイルを作成し、次のようにファイル名を付けます:minecraft_server_stop.sh

  2. テキストファイルを開き、以下のスクリプトを追加します。

#!/bin/bash

# Get the current time in seconds since the epoch
now=$(date +%s)

# Get the time when the last player logged in
last_login=$(grep "joined the game" /path/to/minecraft_server/logs/latest.log | tail -1 | awk -F '[][()]' '{print $2}')

# If no players have logged in or the last login was more than 30 minutes ago, stop the server
if [[ -z "$last_login" ]] || [[ "$(($now - $last_login))" -ge 1800 ]]; then
  screen -r minecraft -X stuff "stop$(printf '\r')"
fi

このスクリプトは、最新のMinecraftサーバーのログファイルから最後にログインしたプレイヤーの時間を取得します。次に、現在の時刻と最後のログイン時刻の差を計算して、30分以上経過している場合にのみサーバーを停止します。

  1. ファイルを保存して閉じます。

  2. スクリプトを実行可能にするために、ターミナルで次のコマンドを実行します:

chmod +x minecraft_server_stop.sh
  1. 最後に、cronを使用して、30分ごとにこのスクリプトを自動的に実行するように設定します。例えば、次のコマンドを使用して、cronジョブを編集できます:

crontab -e
  1. crontabファイルの最後に、次の行を追加します:

*/30 * * * * /path/to/minecraft_server_stop.sh

この行は、30分ごとにminecraft_server_stop.shスクリプトを実行するようにcronに指示します。/path/toをスクリプトのファイルパスに置き換えてください。

これで、30分間誰もログインしていない場合にのみ自動的にサーバーを停止するようになりました。注意点としては、Minecraftサーバーのログファイルのパスが/path/to/minecraft_server/logs/latest.logであることが前提条件になります。もし異なる場所にログファイルがある場合は、スクリプト内のパスを適切に変更してください。

また、このスクリプトを使用する場合は、サーバーのタイムゾーンが正確に設定されていることを確認する必要があります。これは、ログファイルに記録された時刻が、サーバーが実際に実行されている時刻と一致するようにするためです。タイムゾーンが正確に設定されていない場合、サーバーが停止される時間が予期せず変更される可能性があります。

休みのときに試してみようと思う。

あ、tmuxの場合って伝えておかないといけないな・・・

最後までお読みいただき、ありがとうございます。 今後もたくさんの方に読んでいただけるよう精進します。 活動継続にあたりサポートをいただけると、 私のモチベーション維持やクオリティ向上に繋がります。 頂いたサポートはクリエイターとしての活動費にさせて頂きます。 ぜひお願い致します。