简易的进程重启脚本

一个简易的进程重启脚本,配合tmux使用,在进程退出时重新启动程序

最近临时在nuc上开了一个Linux版本的Minecraft服务器,跑在tmux里面,但是进程时不时会崩溃,有时候我又不看群消息,导致玩家很久都进不去,所以写了下面这个简单的脚本配合cron来定时检查进程是否退出,如果进程退出了则向tmux里面输入重启的命令。

不过目前这个版本很是原始,在一台服务器上运行多个进程就会出问题,也没办法处理假死的情况,后续考虑完全通过tmux send的返回而不是依赖进程名字来判断服务器状态。

我的tmux窗口名为mc,服务器运行在第一个(0号)pane中

1
2
3
4
5
6
7
8
#!/bin/bash
now=$(date +"%Y-%m-%d %T")
pgrep bedrock_server > /dev/null
if [ $? -ne 0 ]; then
    echo "${now} server crashed, rebooting..."
    # send command to tmux pane
    tmux send-keys -t mc.0 "bash start.sh" ENTER
fi

配合cron每分钟执行一次脚本即可

1
2
crontab -e
*/1 * * * *  /root/check.sh >> /var/log/mccheck.log
comments powered by Disqus
本站访客数:
Built with Hugo
主题 StackJimmy 设计