有人向我推荐了这个 ServerRestart.sh
以在出现严重故障时重启我的游戏服务器。
while true; do
LD_LIBRARY_PATH=lib ./Server
done
我用这个“改进”了它以在每次重启时删除日志目录。
while true; do
rm -r /home/_jc3105/logs
LD_LIBRARY_PATH=lib ./Server
done
如果您在运行时删除日志目录,此特定服务器将重新启动。我的改进导致它有时会双重重启所以我认为这是解决方案。
while true; do
sleep 4
rm -r /home/_jc3105/logs
LD_LIBRARY_PATH=lib ./Server
done
但我怀疑它还会有一个新问题。有时它会在一瞬间错误地认为服务器需要重新启动,而实际上不需要重新启动,这在我引入文件夹删除之前不是问题。如果被触发,将导致服务器因删除日志文件而重新启动。
我想使用 script.sh
自动重启游戏服务器。我希望它先等待。然后复查真假?条件。
如果服务器 fork 并继续在后台运行,您的 while
循环将在服务器启动后立即运行另一次迭代。您希望避免杀死运行正常的服务器。
while true; do
if ! pidof Server; then
rm -r /home/_jc3105/logs
LD_LIBRARY_PATH=lib ./Server
fi
sleep 5
done
如果服务器没有在 ps
列表中显示为 Server
,显然您需要将参数调整为 pidof
.
删除日志后无需 sleep
。 rm
将删除文件,此操作在 rm
完成时完成。我放入的另一个 sleep
只是为了避免在自旋锁中执行此操作(每秒数千次)。
我是一名优秀的程序员,十分优秀!