当前位置: 代码网 > 服务器>服务器>Linux > 解决Linux systemd服务启动失败Main process exited,code=exited, status=203/EXEC问题

解决Linux systemd服务启动失败Main process exited,code=exited, status=203/EXEC问题

2026年04月12日 Linux 我要评论
问题描述命令:java -xms1024m -xmx1024m -jar /usr/local/java/bin/mashang/app.jar --server.port=8532 ----spri

问题描述

命令:

java -xms1024m -xmx1024m -jar /usr/local/java/bin/mashang/app.jar --server.port=8532 ----spring.profiles.active=test

是可以直接启动的,但是注册service后,使用systemd无法启动

解决思路及方法

vim /etc/systemd/system/mashang.service

查看service文件如下

[unit]
description=mashang service
after=network.target nginx.service
requires=nginx.service

[service]
type=simple
user=root
group=root
execstart=java -xms1024m -xmx1024m -jar /usr/local/java/bin/mashang/app.jar --server.port=8532 ----spring.profiles.active=test
restart=on-failure

[install]
wantedby=multi-user.target

启动日志:

jul 20 21:13:28 localhost systemd[1]: mashang.service: main process exited, code=exited, status=203/exec
jul 20 21:13:28 localhost systemd[1]: mashang.service: failed with result 'exit-code'.
jul 20 21:13:28 localhost systemd[1]: mashang.service: scheduled restart job, restart counter is at 5.
jul 20 21:13:28 localhost systemd[1]: stopped mashang service.
jul 20 21:13:28 localhost systemd[1]: mashang.service: start request repeated too quickly.
jul 20 21:13:28 localhost systemd[1]: mashang.service: failed with result 'exit-code'.
jul 20 21:13:28 localhost systemd[1]: failed to start mashang service.

排除方向一:nohup

在linux系统中,使用nohup命令主要是为了在终端关闭或用户登出后,使命令或脚本在后台继续运行,并且其输出通常会被重定向到一个名为nohup.out的文件中(除非用户指定了其他输出文件)。但是,如果你尝试在开机启动脚本(如/etc/init.d/中的脚本,或使用systemd的.service文件)中使用nohup来启动某个服务或脚本,可能会遇到一些问题。

以下是一些原因和解决方案:

  • 不适合开机启动:nohup主要用于在交互式shell中运行命令,使其在后台运行并忽略挂起(hup)信号。在开机启动脚本中,你通常不需要nohup,因为这些脚本本身就是在系统启动时以非交互式方式运行的。
  • 日志重定向:如果你使用nohup并将输出重定向到某个文件,那么在系统启动过程中可能会出现权限问题或路径问题。确保你的脚本有足够的权限来写入指定的日志文件,并且路径是正确的。
  • systemd替代方案:如果你使用的是现代linux发行版,建议使用systemd来管理服务,而不是传统的init脚本。你可以创建一个.service文件,并指定你的服务应该如何启动、停止和重启。在.service文件中,你可以使用execstart指令来指定要运行的命令或脚本,而无需使用nohup。
  • 环境变量问题:nohup命令可能会改变某些环境变量,这可能会影响你的脚本的运行。在开机启动脚本中,环境变量可能与你在交互式shell中看到的不同。确保你的脚本不依赖于任何特定的环境变量,或者在你的脚本中显式设置这些变量。
  • 调试和日志记录:如果你的脚本在开机时无法启动,请确保启用详细的日志记录,并检查系统日志(如/var/log/syslog、/var/log/messages或journalctl)以获取更多信息。你还可以尝试在脚本中添加set -x来启用跟踪,以便查看脚本在运行时执行的每个命令。
  • 权限问题:确保你的开机启动脚本和要运行的命令或脚本具有正确的权限。你可能需要使用chmod和chown命令来设置适当的权限和所有权。
  • 总之,虽然nohup在某些情况下很有用,但在linux的开机启动脚本中通常不是必需的。如果你遇到问题,请考虑使用其他方法(如systemd)来管理服务,并检查日志以获取更多信息。

排除方向二:使用绝对路径而不是相对路径

java改绝对路径后正常

vim /etc/systemd/system/mashang.service

查看service文件如下

```bash
vim /etc/systemd/system/mashang.service

查看service文件如下

[unit]
description=mashang service
after=network.target nginx.service
requires=nginx.service

[service]
type=simple
user=root
group=root
execstart=java -xms1024m -xmx1024m -jar /usr/local/java/bin/mashang/app.jar --server.port=8532 ----spring.profiles.active=test
restart=on-failure

[install]
wantedby=multi-user.target

systemctl status mashang

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com