后台服务器运行过程中,有时候由于bug或者其他不确定的因素导致某个游戏进程宕机,比如场景服,及时自动拉起该宕机进程可以提高玩家的游戏体验,玩家可能都感知不到有进程宕机,所以自动拉起宕机的进程是目前游戏后台服务器设计中一种通用的做法。
贴一个使用python拉起宕机服务器进程的代码:
import time
import os
import sys
def main():
restart_delay = 5
if len(sys.argv) != 3:
print "usage: ./my_guard.py server para"
cmd = str(sys.argv[1])
para = str(sys.argv[2])
while True:
status = os.system("nohup %s >%s 2>&1" %(cmd, para))
time.sleep(restart_delay)
if __name__ == "__main__":
sys.exit(main())
可以使用kill -9 某个场景服进程号 杀死一个场景服务器进程, 会发现游戏屏幕出现"转圈"现象,过五秒后,被杀死的这个服务器进程自动重启,这时游戏又恢复正常了。
还有使用sh脚本拉起进程例子,它们实现的思想都是通过定期轮询进程是否存在,如果不存在则重启该进程。
sh脚本拉起进程:
https://blog.csdn.net/wangshui898/article/details/80236458