部署环境:应用以及相关组件,例如nacos,redis都是通过rc.local的一个脚本启动的。
故障现象:所有组件及应用开机通过这个脚本自启动顺序正常,也都依次启动了,但是等到自启动脚本执行完毕后,所有这个脚本里面执行的命令
都会失败停止,比如nacos。
解决:进过排查是脚本的最后一条curl命令需要访问网络,所有在服务器断网的情况下就是访问失败,造成整个脚本执行的命令失败,而自动停止。
同时查看systemctl status rc-local查看 服务failed。通过查询资料,如果rc.local执行的命令最后返回的是非0,那么就会造成启动失败,整个过程的
命令都会失败。最后通过在rc.local最后那个脚本的最后一个一行填写exit 0临时解决,也就是无论脚本执行情况如何,最后返回码都是0,成功的。
思考:通过查询rc.local,其实是属于systemd的一种服务,其机制是开启一个shell执行命令,如果最后shell返回码失败,那么整个过程失败。暂时
是这么理解的。