systemd 服务启动失败?先查这四处

举报
yd_227538180 发表于 2026/10/26 15:46:03 2026/10/26
【摘要】 服务用 systemctl start 起不来,报错往往只有一句 Failed to start,看不出根因。别急着重装或改配置,按下面四处逐个过,多数问题几分钟就能定位。第一处:先看它到底为什么死systemctl status <服务名>journalctl -u <服务名> --since "10 minutes ago"status 给的是摘要,journalctl 才是完整报错。先...

服务用 systemctl start 起不来,报错往往只有一句 Failed to start,看不出根因。别急着重装或改配置,按下面四处逐个过,多数问题几分钟就能定位。

第一处:先看它到底为什么死

systemctl status <服务名>
journalctl -u <服务名> --since "10 minutes ago"

status 给的是摘要,journalctl 才是完整报错。先拿到最后一屏报错再动手,别凭感觉改配置。常见报错分三类:配置文件语法错、依赖文件找不到、端口已被占用,对应处理完全不同。

第二处:配置文件和路径对不对

服务启动时读不到配置、ExecStart 里的可执行文件路径写错、WorkingDirectory 不存在,都会直接退出。重点核对三点:unit 文件里的路径是不是真实存在的、配置里的相对路径在服务运行时解析到哪里去了、文件权限够不够。刚改完 unit 文件别忘了:systemctl daemon-reload。不 reload,systemd 跑的还是旧配置,改了等于没改。

第三处:端口和依赖服务冲突

端口被别的进程占了,服务起不来就退;依赖的数据库、网络还没就绪,服务也会启动失败。先确认端口归属:ss -tlnp | grep <端口>。如果是别的进程占了端口,要么停掉它,要么改服务的监听端口。再看 After 和 Requires 有没有把依赖关系写对——依赖服务没起来就强行启动,失败是迟早的事。

第四处:权限和环境变量够不够

服务默认以 root 之外的用户运行时,读不到证书、写不了日志目录都会失败。检查 User 指定的用户对配置、数据、日志目录有没有读写权限。再看 EnvironmentFile 指向的文件存不存在、里面的必填变量有没有缺:本地手动能跑、systemd 里跑不起来,十有八九是环境变量在两种运行方式下不一致。

一句话总结:先看 journalctl 的报错,再确认 unit 配置、端口依赖、权限环境变量。按这个顺序查,服务起不来基本能快速破案;修好一个再往下走,别同时改四处。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。