Created
February 23, 2021 05:55
-
-
Save kengonakajima/e4f5f76a76ddc1c45fa0ca183d2c07cc to your computer and use it in GitHub Desktop.
starting server endless
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
簡易的なサーバー自動再起動の設定方法は、 | |
サーバーの実行ファイルをシェルスクリプトから起動する。 | |
シェルスクリプトの中で永久ループを使う。 | |
endless.shを以下のように設定する | |
``` | |
ulimit -n 4000 # なくてもいい。TCPのサーバーだと便利なときもある | |
while true; do | |
date # 起動の日付がログに残ってると便利 | |
hostname # どのマシンかわからなくならないように | |
echo starting server.. | |
./server_executable # 任意のサーバー実行ファイルを指定。バックグラウンド実行にしないのが重要。クラッシュ、シグナルまたは正常終了するまで待つ | |
sleep 2 # 少しスリープすることで、bind errorのときに超高速に再起動をし続けるのを防ぐ | |
done | |
``` | |
リモートの作業用環境からsshし、 nohupコマンドとdisown指示の組み合わせを用いて起動する。 | |
こうすることで、SSHが切断してもこのスクリプトは無限に再起動し続ける。 | |
ssh voice03 'nohup bash endless.sh > nohup.3478.out 2>&1 & disown' | |
サーバーの再起動をするにはkillするだけでよいが、更新もしたい場合はいちど永久ループを止める必要がある。 | |
それには、bashのプロセスを検索してbashを先にkillする必要がある。 | |
サーバーをgdb経由で自動的にデバッガ起動し、クラッシュしたときに自動的に | |
バックトレースを保存するなどもできるが、それは後で。 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment