服务器日志是排查系统异常、网站访问问题和安全事件的重要依据。很多刚接触运维的朋友一听到“日志”就头大,其实只要掌握基本操作,查看日志并没有想象中那么复杂。
常见的日志存放位置
大多数 Linux 服务器的日志默认存放在 /var/log 目录下。比如:
/var/log/messages:系统级通用日志(CentOS/RHEL)/var/log/syslog:系统综合日志(Ubuntu/Debian)/var/log/auth.log:登录认证相关记录/var/log/nginx/access.log:Nginx 的访问日志/var/log/apache2/error.log:Apache 错误日志
进入对应目录,用 ls 命令看看有哪些文件,就能大概判断服务运行情况。
用命令行实时查看日志
最常用的命令是 tail。比如想看最近 10 行 Nginx 访问日志:
tail -n 10 /var/log/nginx/access.log
如果正在排查某个接口报错,可以用 -f 参数动态追踪新增内容:
tail -f /var/log/nginx/error.log
这时候你刷新网页,对应的错误信息就会实时刷出来,就像监控摄像头一样直观。
搜索关键字定位问题
日志文件动辄几百兆,手动翻不现实。结合 grep 能快速过滤关键信息。例如查找所有包含 “404” 的访问记录:
grep "404" /var/log/nginx/access.log
还可以加上时间范围缩小结果,比如查某天下午的异常:
grep "15:30" /var/log/nginx/error.log | grep "500"
有时候 IP 攻击频繁,可以通过统计访问最多的 IP 来识别异常:
cut -d' ' -f1 /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
用 journalctl 查看 systemd 服务日志
现在很多新系统使用 systemd 管理服务,可以用 journalctl 直接查看服务运行记录。比如查看 Nginx 的最新日志:
journalctl -u nginx.service
加个 -f 参数也能实时跟踪:
journalctl -u nginx.service -f
如果想知道昨天的服务状态,可以指定日期:
journalctl -u nginx.service --since yesterday
图形化工具也不是不行
如果你更习惯点鼠标,像 Logwatch、GoAccess 这类工具可以把日志生成网页报表。特别是 GoAccess,几行命令就能把访问日志变成可视化页面:
goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED
生成的 report.html 打开就能看到访问来源、热门页面、响应状态分布,适合给非技术人员看。
权限问题别忽略
普通用户执行上述命令时可能提示“Permission denied”。这时候需要加 sudo 提权:
sudo tail -f /var/log/auth.log
尤其是涉及登录、SSH 尝试这类敏感日志,系统默认只允许 root 或 wheel 组查看。
遇到服务突然无法访问,先看日志往往比重启来得更快。熟练使用这几个命令,日常排障效率能提升一大截。