服务器检测服务状态并自动重新部署

最近服务器没有太多任务,在研究运维的东西,自动化部署,服务监控等等
想做一个脚本去监视服务的运行状态,如果服务因为不可知原因挂掉,即使无人看守,也能在最短时间内自己重新部署,将影响降至最低,避免深夜无人值守服务器告警无人处理的局面
脚本如下:

#!/bin/bash
# 根据配置文件获取到占用端口的配置信息并取出端口号
# 因为配置文件的编码问题,有可能取到的值会伴随着"/r",我们使用 tr -d '\r'去除"/r"
port=`sed '/^websocket_port=/!d;s/.*=//' conf/gameParams.properties | tr -d '\r'`
# 根据占用端口号搜索进程的pid
pid=`netstat -tnlp | egrep $port  |awk '{sub("/java","",$7);print $7}'`
if [ ! -n "$pid" ];then
 # 如果服务异常结束,输出重新部署的时间,根据时间排查案发时间的服务器日志,准确定位
 echo `date +%Y-%m-%d %H:%M:%S` "server is not running, reboot now..." >> monitor.log
 # 启动服务
 # startServer
else
 echo "server is running!"
fi

至此,脚本编写完成,下一步,加入系统定时任务,当然也可以选择在脚本中使用循环,休眠来实现监控服务的目的,但是我并不喜欢循环所以选择定时任务
在此之前记得将刚才编写的脚本添加执行权限

# 添加脚本执行权限为所有用户可读写
chmod 777 /bin/startServer.sh

命令使用crontab
如果没有安装可以使用yum/rpm/brew等工具安装crontabs
-y自动安装依赖

# 安装crontabs
yum install crontabs -y
# 打开调度任务
crontab -e
# 在编辑器中添加cron表达式正则以及定时脚本路径
# 每五分钟检查一次服务运行状态,保存退出,重新载入配置
*/5 * * * * /bin/startServer.sh
# 重新载入配置:
systemctl reload crond.service
# 查看crontab服务状态:
service crond status 
# 重启服务:
systemctl restart crond.service
# 列出当前的所有调度任务:
crontab -l  

现在,所有的准备工作就完成了,服务器就可以自动检查服务状态并愉快的自动部署啦!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容