systemd 服务起不来?先按这四步排查,再看日志

举报
yd_261978469 发表于 2026/11/04 19:57:36 2026/11/04
【摘要】 服务起不来不要反复重启:先看状态区分 failed 与 inactive,再用 journalctl 定位第一次报错,校验 systemd 单元文件与启动环境,最后排查依赖、端口和资源,按清单快速定位。

早上收到告警:某个服务没有随开机正常运行,手动启动又立刻退出。这时不要反复重启,先把失败现场固定下来,再按固定顺序排查。


第一步,看服务状态。执行 systemctl status xxx.service,先看 Active 是 failed 还是 inactive,再看最近输出有没有 ExecStart 报错、退出码、权限不足或找不到文件。两者含义不同:inactive 可能根本没被拉起,failed 则是尝试启动后失败。同时用 systemctl is-enabled xxx.service 确认是否真的设置了开机自启。


第二步,看日志,并收窄时间范围。用 journalctl -u xxx.service --since "1 hour ago" 看最近一小时日志,再用 -xe 看带解释信息的尾部。如果服务反复重启,先定位第一次失败的时间点,再向后追踪,关键信息通常是启动命令报错、配置文件解析失败、依赖未就绪、端口被占用或资源不足。先记下第一次报错,不要被后续连锁报错带偏。


第三步,校验单元文件和启动环境。用 systemd-analyze verify xxx.service 检查语法,再逐项核对:ExecStart 是否为绝对路径、程序是否存在且可执行、WorkingDirectory 是否存在、User 是否有读写配置和日志目录的权限、EnvironmentFile 是否存在、变量是否拼错。一个常见坑是终端能跑通、systemd 却失败,多半是环境变量、当前目录或 PATH 不一致,改写为绝对路径后复现一次即可确认。


第四步,查依赖、端口和资源。After、Wants、Requires 决定启动顺序,依赖没起来或网络未就绪都会让服务提前失败。用 ss -tlnp 查端口占用,确认是否为旧进程未退出或两个服务抢同一端口。再看磁盘剩余空间、日志目录是否写满、内存是否紧张,这些都可能让服务刚启动就失败。


按这张清单走一遍:状态、第一次报错、单元校验、手动复现、依赖与端口、磁盘与内存,大多数启动问题都能在十几分钟内定位到具体一环。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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