服务器半夜报警、某个服务突然起不来、网络莫名其妙连不上——遇到这类问题,新手往往只能重启试试,老手则会先去翻日志。Linux 把系统运行的几乎所有线索都记在了日志里,学会看日志,你就等于拿到了系统的”黑匣子”。本文分两路讲清楚:systemd 时代的 journalctl,以及传统的 /var/log 文件,再给你一套实用的排查套路。
一、为什么要学会看日志
日志是系统自己写的”现场记录”:什么时候谁启动了、哪条命令失败了、内核报了什么错,全都有时间戳。比起凭感觉猜,看日志能让你用证据定位问题,而不是靠运气。无论是排障还是事后复盘,这都是一个 Linux 使用者必备的基本功。
二、systemd 时代:journalctl 基本用法
现代发行版大多用 systemd 作为初始化系统,日志统一由 journald 收集,查看命令就是 journalctl。直接运行会按时间顺序列出全部日志,最新的在最下面。常用起步姿势:journalctl -xe 查看最近的错误并带编辑器式跳转;journalctl -b 只看本次开机以来的日志;journalctl -p err 只显示错误级别以上,能快速过滤掉噪声。
2.1 按服务看日志
想盯某个服务,比如 SSH,用 journalctl -u sshd 即可只看它的输出;加上 -f 还能像 tail 一样实时滚动,排障时特别方便。搭配 --since "2026-08-22 09:00" --until "10:00" 可以精确锁定出事的时间窗口。
三、传统日志文件:/var/log 目录里有什么
即便用了 journald,很多程序仍会把日志写到 /var/log 目录。常见有:/var/log/syslog(或 messages)记录系统总体事件;/var/log/auth.log 记录登录与认证,查 SSH 暴力破解就靠它;/var/log/kern.log 是内核日志;各应用的独立目录(如 nginx、mysql)也常驻这里。知道每份日志管什么,出事时才知道去哪翻。
四、配合 grep/sed/awk 做批量分析
日志动辄几千行,肉眼翻不现实,必须上文本处理三剑客。比如统计某 IP 在 auth.log 里出现多少次:grep "Failed password" /var/log/auth.log | grep "1.2.3.4" | wc -l;用 awk 按时间聚合错误数也很容易。关于 grep/sed/awk 的完整入门,可参考Linux 文本处理三剑客 grep/sed/awk 入门实战:从日志分析到批量替换,本文的很多技巧正是建立在它之上。
另外,把日志查看和定时任务结合能事半功倍,例如用 cron 每天凌晨汇总昨日错误并邮件告警,思路见Linux 定时任务 cron 完全指南:从 crontab 配置到定时备份脚本实战。遇到”连不上”这类网络问题,日志配合 ping/traceroute 一起看,定位更快,方法在Linux 网络故障排查实战:从 ping 到 traceroute 一步步定位”连不上”里有详细拆解。
五、常见故障的日志排查套路
服务起不来:先 journalctl -u 服务名 -xe 看退出原因,多半是配置写错或端口被占。登录失败暴增:翻 auth.log,若全是某 IP 的 Failed password,基本是暴力破解,配合Linux 防火墙配置实战:从 ufw 到 firewalld,开放端口与放行服务不再踩坑把它封掉。磁盘写满导致崩溃:用日志时间戳定位是哪天开始爆满,再清理对应目录。记住一条原则:先锁定时间窗口,再缩小到具体服务,最后看错误关键字。
结语
看日志不是高深学问,而是”知道去哪看、用什么过滤、按什么顺序想”的肌肉记忆。把 journalctl 和 /var/log 两套都摸熟,再配合 grep/sed/awk,你就能在系统出事的第一时间拿到线索、稳住局面。建议现在就打开终端,随便翻翻今天的日志,培养一下”读系统日记”的感觉。










暂无评论内容