最近友人とパルワールドをプレイしてるんだけど、Linux鯖で鯖を立てていても地味に落ちていて自分がいないときにみんながプレイできなくなるパターンがあったので自動で再起動するようにしてみた。
ダンジョンに入った瞬間に落ちたりすることが多いかも。
パルワールドの鯖の建て方は公式に載っているので割愛するけど、SteamCMDをHomeディレクトリに入れておいて、Homeディレクトリ内のpalworldディレクトリから起動するようにしている。
./steamcmd.sh +force_install_dir palworld +login anonymous +app_update 2394010 validate +quit
鯖のインストールもアップグレードもとりあえずはこの1行で行っている。
設定ファイルはこの場合で言う、palworld直下のDefaultPalWorldSettings.iniにデフォルトの設定が保存されるので、このファイルの中身をコピーして、./Pal/Saved/Config/LinuxServer/PalWorldSettings.iniの中身に貼り付けて必要な設定を変更する。とりあえずServerNameとServerPasswordだけ変更した。
そんでもってPalServer.shを起動すれば鯖が立ち上がるんだけど、4人ぐらいでプレイしていても2時間置きぐらいにセグったりして落ちているので、自分が先に寝たりすると友人が入れなかったりで(地味に夜通しでやってるやつも居るし)ということで対策してみた。
まえにどこかで見た手法何だけど、とりあえずいちばん簡単なシェルスクリプトでwhileを使って実装してみた。
#!/bin/bash cd palworld count=0 start_time=$(date +%s) while : do ./PalServer.sh echo "Server Down" end_time=$(date +%s) run_time=$(((end_time - start_time) / 60)) count=$(expr $count + 1) echo $count echo $run_time sleep 10s done
とりあえずこんな感じでhomeディレクトリにpal.shとかで保存して実行権限を与えれてScreenで実行してる。落ちた回数と稼働時間もコメントするようにしてあるけど、実際はwhileの中でPalServer.shを呼んでいるだけ。落ちると10秒待って何度でも実行される。
一応こんな感じで簡単に実装したんだけど今のところちゃんと動いてる。1日に5回ぐらい落ちてるけど…。
アップグレードが来たら自動で更新できるようにしたいなぁ
0 件のコメント:
コメントを投稿