如何将Java SpringBoot应用设为Linux系统服务及启动故障排查
解决SpringBoot应用systemd服务启动失败(状态码203/EXEC)的问题
错误原因分析
从服务状态输出可见,ExecStart指定的脚本/home/Manoj/vehicle-servive/build/libs/start.sh执行失败,返回状态码203/EXEC。该错误通常由以下原因导致:
- 脚本无可执行权限
- 脚本首行的shebang配置错误
- 脚本路径存在拼写错误(比如输出里的
vehicle-servive疑似少了字母c,应为vehicle-service) - 脚本依赖的环境变量未正确配置(如Java路径未在systemd服务中指定)
排查与修复步骤
1. 验证脚本路径正确性
先确认脚本是否存在:
ls -l /home/Manoj/vehicle-servive/build/libs/start.sh
若提示文件不存在,修正服务文件中ExecStart的路径拼写。
2. 赋予脚本可执行权限
执行命令添加权限:
chmod +x /home/Manoj/vehicle-servive/build/libs/start.sh
3. 检查脚本shebang行
确保脚本首行配置正确的解释器,比如bash脚本首行应为:
#!/bin/bash
若无需脚本直接运行jar包,可修改systemd服务的ExecStart为Java命令:
ExecStart=/usr/bin/java -jar /home/Manoj/vehicle-servive/build/libs/vehicle_service-0.1.0.jar
4. 配置systemd服务环境变量(可选)
若脚本依赖JAVA_HOME等环境变量,可在服务文件中添加:
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
5. 重新加载配置并重启服务
完成修改后执行以下命令:
systemctl daemon-reload systemctl restart vehicle_service-0.1.0.service
查看服务状态确认修复结果:
systemctl status vehicle_service-0.1.0.service
内容的提问来源于stack exchange,提问作者ManojReddy
相关产品推荐
相关产品推荐

