Linux 入门:用 systemctl 与 journalctl 在十分钟内定位服务故障

举报
yd_212151334 发表于 2026/10/30 16:22:17 2026/10/30
【摘要】 用 systemctl 看状态、用 journalctl 看日志,十分钟定位 Linux 服务故障:先状态、再日志、再复现,附端口占用与配置错误的排查例子。

服务起不来的时候,很多人第一反应是反复重启。其实重启之前先把状态和日志看清楚,往往十分钟就能找到原因。本文用 Linux 上最常见的两个工具 systemctl 与 journalctl,讲一套新手也能直接照做的排查顺序。


第一步,先看服务状态。执行 systemctl status 服务名,可以看到服务是正在运行、已经退出,还是启动失败;再用 systemctl is-active 服务名 和 systemctl is-enabled 服务名,区分是这次没有起来,还是根本没有设置开机自启。如果服务启动后立刻退出,问题多半在配置、端口或依赖上,而不是系统本身坏了。


第二步,再看日志,不要只看最后一行。执行 journalctl -u 服务名,可以按时间顺序看到该服务的完整日志;加上 -n 100 只看最近一百条,加上 --since "10 minutes ago" 只看最近十分钟,加上 -p err 只看错误级别。用 journalctl -u 服务名 -f 可以实时跟踪日志,复现一次故障,日志里往往会直接出现报错的关键词。


第三步,对照三类常见原因。第一是端口被占用,例如旧进程没有退出,新进程就无法绑定端口,可以用 ss -tlnp 查看占用端口的进程,再决定是停止旧进程还是改端口。第二是配置文件写错,例如少了一个括号、多了一个空格,启动前先用服务自带的检查命令验证,例如 Nginx 可以用 nginx -t。第三是权限或依赖问题,例如目录不可写、依赖的数据库或网络还没有就绪,这时日志里通常会有权限被拒绝或者连接失败的提示。


举一个完整例子。假设一个 Web 服务启动后立刻退出,先执行 systemctl status 查看状态为失败,再执行 journalctl -u 该服务 -n 50,发现日志提示地址已经被占用。接着用 ss -tlnp 确认占用端口的进程,确认是之前没有退出的旧进程后将其停止,再执行 systemctl restart 重新启动,最后用 curl 或者浏览器访问一次,确认服务恢复正常。整个过程没有盲目重启,也没有改动不相关的配置。


最后给新手三个习惯。第一,改配置之前先备份原文件,改错了可以立刻恢复。第二,生产环境不要直接删除日志文件来省空间,先确认日志轮转是否正常。第三,把每次故障的原因和解决办法记下来,下一次遇到类似报错,先搜索自己的记录,再去查文档。先状态、再日志、再复现,这条顺序用熟了,大多数服务故障都可以在十分钟内定位。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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