需要实现看门狗功能,定时检测另外一个程序是否在运行,使用 crontab 仅可以实现检测程序是否正在运行,无法做到扩展,如:手动重启、程序升级(如果只需要实现自动升级功能可以使用 inotify)等功能;最后决定使用 Spring Boot 调用 Shell 脚本来实现
一、脚本
1.1 启动脚本
1 | #!/bin/bash |
1.2 重启脚本
1 | #!/bin/bash |
二、功能实现
将脚本放置在程序的资源目录下,每次程序启动时将脚本读取到指定位置,然后再通过定时任务执行脚本
配置内容:
1 | shell: |
1 | @Configuration |
2.1 启动时将脚本读取到指定位置
1 | @Component |
2.2 定时任务定时任务执行脚本
1 | @Component |
2.3 扩展
- 本例只实现了定时检测程序是否运行,如果没有运行则启动程序;如有需要可以添加接口,调用接口重启程序;或者添加定时任务定时检测程序是否有更新,如果有更新则下载新的 jar 包然后重启程序
- 看门狗程序自己可以使用 crontab 定时检测是否正在运行,模仿上面的启动脚本编写看门狗的启动脚本,然后添加定时任务:
1 | crontab -e |
完整代码:GitHub