Linux入门——用 systemctl 与 journalctl 快速定位服务启动失败

举报
f841705799 发表于 2026/10/31 09:33:48 2026/10/31
【摘要】 服务起不来时,最忌讳上来就反复重启。重启会冲掉现场,还可能把一条原本很清楚的报错埋在重复日志里。更稳妥的顺序是:先看状态,再看日志,再看配置与端口占用。状态告诉你它停在哪一步,日志告诉你它为什么停,配置和端口告诉你它下次能不能正常起来。第一步,先看状态。systemctl status 会把当前状态、最近日志片段和主进程信息放在一起:先确认它是 failed 还是 inactive,再看 A...

服务起不来时,最忌讳上来就反复重启。重启会冲掉现场,还可能把一条原本很清楚的报错埋在重复日志里。更稳妥的顺序是:先看状态,再看日志,再看配置与端口占用。状态告诉你它停在哪一步,日志告诉你它为什么停,配置和端口告诉你它下次能不能正常起来。

第一步,先看状态。systemctl status 会把当前状态、最近日志片段和主进程信息放在一起:先确认它是 failed 还是 inactive,再看 Active 后面的时间点、退出码和 Main PID。failed 说明它尝试启动过但失败了,inactive 则可能是从未启动,或者被 stop 后没有再拉起来,两者的排查方向并不相同。

以 nginx 为例,把服务名换成你自己的服务即可:systemctl status nginx --no-pager。加上 --no-pager 是为了让输出一次显示完,不进入分页器,方便复制关键行。如果状态里已经出现配置文件路径、权限不足或找不到可执行文件等提示,这一步就已经足够定位方向,不必急着翻全部日志。

第二步,再看日志。状态里只有最近几行,往往不够判断原因,这时用 journalctl 只看这一个服务的本次启动日志:journalctl -u nginx --no-pager -n 100。-u 指定服务,-n 100 只看最后 100 行,避免被系统其他日志淹没。重点看时间戳最接近失败时刻的那几行,常见的关键词有 failed、error、permission denied、no such file、address already in use,把整句报错抄下来再去搜索,比只记一个词更有效。

第三步,再看配置与端口占用。很多启动失败来自改错的配置文件或端口已被占用:先确认配置文件语法有没有改错,再确认监听端口是否已被其他进程占用。改完配置后不要只重启一次就下结论,先用 status 确认它真的进入 active 状态,再用 journalctl 看一次新日志,确认没有新的报错。养成先状态、再日志、再配置与端口的顺序,下次服务起不来时,十分钟内一般就能找到方向。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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