用 journalctl 快速定位 Linux 服务起不来的原因

举报
yd_246130537 发表于 2026/10/27 09:48:12 2026/10/27
【摘要】 用 journalctl 快速定位 Linux 服务起不来的原因服务突然起不来,先别急着重装或重启整台机器。systemd 的日志都在 journal 里,用 journalctl 按服务名筛一遍,往往几分钟就能找到根因。第一步先看服务状态:systemctl status nginx --no-pager -l。这里能看到它是不是 active、最近一次退出的退出码,以及最后几行日志。如果...

用 journalctl 快速定位 Linux 服务起不来的原因

服务突然起不来,先别急着重装或重启整台机器。systemd 的日志都在 journal 里,用 journalctl 按服务名筛一遍,往往几分钟就能找到根因。

第一步先看服务状态:systemctl status nginx --no-pager -l。这里能看到它是不是 active、最近一次退出的退出码,以及最后几行日志。如果状态是 failed,记住失败时间,再去翻对应时间段的完整日志。

第二步查本服务的日志:journalctl -u nginx --since "2026-10-27 09:00" --no-pager。只看一个服务、不加时间范围时,日志可能翻不到头;加上 --since 限定到故障前后,效率高很多。想实时跟进就用 journalctl -u nginx -f,改完配置重启服务,日志会立刻滚动出来。

第三步按级别过滤:journalctl -u nginx -p err --since today 只看错误及以上级别,能快速跳过大量 info 噪音。如果怀疑是启动顺序问题,加上 -o short-precise 看带毫秒的时间戳,对照依赖服务的启动时间。

常见根因有三类。一是端口被占:日志里出现 address already in use,用 ss -tlnp | grep 80 找到占用进程,先停掉冲突服务再重启。二是配置文件写错:nginx 会报 test failed 并指出行号,先 nginx -t 校验,通过后再 reload,不要直接 restart 掩盖问题。三是权限或路径问题:Permission denied 多半是目录属主不对或 SELinux/AppArmor 拦截,检查属主和 ls -ld 路径权限,别一上来就 chmod 777。

还有一个容易忽略的点:磁盘满了也会让服务起不来。df -h 看一眼根分区,日志写不进去时 journal 本身也会报错。先清掉过期日志 journalctl --vacuum-size=500M 腾出空间,再回头处理服务。

养成习惯:每次改配置前先备份原文件,改完先 systemctl reload,reload 不生效再 restart;每次故障先 status 再 journalctl -u,按时间、按级别筛,别在大海捞针式翻全量日志里浪费时间。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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