新部署的服务执行启动命令直接失败,状态里写着 203,没有任何应用日志输出,改配置也不见好转。
排查方向其实有限,先把可能性排一排。启动命令指向的解释器路径不存在。少数情况下是脚本没有执行权限,或者开头的解释器声明写错。
少数情况下是安全模块阻止了在非标准目录执行程序。
第一件事是看服务状态和报错行
systemctl status app -l
然后核对启动命令的实际路径
systemctl cat app | grep ExecStart
接着确认权限和解释器声明
ls -l /opt/app/start.sh && head -1 /opt/app/start.sh
末了检查文件的安全上下文
ls -Z /opt/app/start.sh
白天有业务在跑,能验证的部分都压到了晚上做。
恢复的判定其实很直接。服务状态变为运行中,应用日志正常输出,重启机器后依然能自动拉起。
补一句。这个错误码一定是启动命令本身的问题,跟应用逻辑无关;路径里带空格或者引号写错也会报同样的错。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。