知用网
霓虹主题四 · 更硬核的阅读氛围

运维常用的错误日志命令 日常维护方法与实用案例

发布时间:2025-12-13 07:32:31 阅读:155 次

排查问题从看日志开始

服务器半夜报警,网站打不开,接口返回500。这种时候别慌,先去看日志。运维日常里,80%的问题都能从错误日志里找到线索。掌握几个常用命令,能让你快速定位故障点,少背锅。

查看实时日志输出:tail -f

服务刚重启,想看看有没有报错,最直接的方式就是盯着日志实时刷。

tail -f /var/log/nginx/error.log

这条命令会持续输出文件末尾新增的内容,适合观察正在发生的错误。比如你改了Nginx配置,重载后马上用它看一眼,如果有语法错误或端口冲突,立刻就能看到。

搜索关键错误信息:grep

日志文件动辄几百M,肉眼翻不现实。用grep过滤关键词,精准打击。

grep "502 Bad Gateway" /var/log/nginx/error.log

还可以加上行号和上下文:

grep -n -A 2 -B 2 "Connection refused" /var/log/app.log

-n 显示行号,-A 2 输出匹配行之后的2行,-B 2 之前2行,方便看清错误前后的操作流程。

按时间筛选日志:sed 或 awk

有时候你知道问题发生在某个时间段,比如昨晚8点到8点半。可以用sed截取这个区间。

sed -n '/2024-06-15 20:00/,/2024-06-15 20:30/p' /var/log/syslog

前提是日志每行开头有标准时间戳。这种方式比全文件grep快得多。

查看系统级错误:dmesg

程序起不来,可能是系统资源出问题。内存耗尽、进程被杀,这些通常不会写进应用日志,但会出现在内核日志里。

dmesg | grep -i "killed process"

看到oom-killed(内存不足被杀)的记录,基本就能确定是内存爆了,该加就加,该优化就优化。

综合查询工具:journalctl(适用于 systemd 系统)

现在大多数 Linux 发行版都用 systemd,服务日志统一归 journalctl 管。

journalctl -u nginx.service --since "2 hours ago"

查某个服务最近两小时的日志。还能按等级过滤:

journalctl -u mysql.service -p err

只看 MySQL 服务的错误级别日志,省去一堆info干扰。

压缩日志怎么查?zgrep 来帮忙

老日志通常会被 logrotate 压缩归档,变成 .gz 文件。别解压,直接用 zgrep。

zgrep "timeout" /var/log/nginx/error.log.1.gz

它和 grep 用法一样,支持正则和上下文参数,效率高还不占空间。

小技巧:给常用组合写个别名

每天都要查 PHP 错误,可以加个别名到 ~/.bashrc:

alias phperr='grep -i "fatal\|error" /var/log/php-fpm.log | tail -20'

以后输入 phperr 就能快速看到最近的严重问题,省得每次都敲一长串。