新部署的服务执行启动命令直接失败,状态里写着 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

白天有业务在跑,能验证的部分都压到了晚上做。

恢复的判定其实很直接。服务状态变为运行中,应用日志正常输出,重启机器后依然能自动拉起。

补一句。这个错误码一定是启动命令本身的问题,跟应用逻辑无关;路径里带空格或者引号写错也会报同样的错。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189