在 Linux 系统中,日志文件是系统管理员和开发人员排查问题、监控系统状态、分析安全事件的重要依据。Linux 提供了多种日志记录机制和查看工具,从传统的 syslog 到现代的 journalctl,开发者和运维人员可以通过一系列命令查看系统运行状态、服务错误、内核信息、用户操作记录等。
本文将围绕 Linux 系统日志的基本构成、常用日志文件路径、日志查看命令大全 以及 典型应用场景 进行详细讲解,帮助用户全面掌握 Linux 系统日志的查看方式与操作技巧。
Linux 系统日志由多个组件共同维护,主要包括:
内核日志:由 dmesg 或 journalctl 查看;
系统日志:记录系统启动、服务状态、登录信息等,通常由 rsyslog 或 syslog 服务管理;
应用程序日志:如 Nginx、Apache、MySQL、SSH 等应用会将日志写入指定文件;
安全日志:记录用户登录、权限操作等安全相关信息;
日志文件格式:通常包含时间戳、主机名、进程名、日志内容等。
日志的存储路径和格式可能因发行版不同而有所差异,例如:
Debian/Ubuntu:/var/log/syslog;
CentOS/RHEL/Fedora:/var/log/messages;
登录日志:/var/log/auth.log(Debian)或 /var/log/secure(CentOS);
内核日志:/var/log/dmesg 或 dmesg 命令;
系统日志:/var/log/messages 或 /var/log/syslog。
tail:查看日志文件末尾内容
tail 是最常用的日志查看命令之一,适用于查看日志文件的最新记录。
tail -f /var/log/syslog # 实时查看 syslog 日志
tail -n 50 /var/log/secure # 查看最近 50 行安全日志
less:分页查看日志文件
less 是一个分页查看工具,适合查看较大的日志文件:
less /var/log/messages
在 less 中,可以使用 / 搜索内容,按 q 退出。
cat:一次性输出日志内容
cat /var/log/dmesg
适用于快速查看小型日志文件,不推荐用于大文件。
grep:过滤日志内容
结合 grep 可以快速定位特定信息:
grep "Failed password" /var/log/auth.log
也可以结合 tail 使用:
tail -n 1000 /var/log/syslog | grep "error"
journalctl:systemd 系统的日志查看器
在使用 systemd 的系统中(如 Ubuntu 16.04+、CentOS 7+、Fedora),推荐使用 journalctl 查看日志。
journalctl -u sshd # 查看 sshd 服务日志
journalctl -b # 查看本次启动的日志
journalctl --since "1 hour ago" --until "10 minutes ago" # 查看指定时间段日志
dmesg:查看内核日志
dmesg 命令用于查看或控制内核环形缓冲区日志:
dmesg
dmesg | grep -i "error"
实时监控日志变化(tail -f)
tail -f /var/log/nginx/access.log
该命令会持续输出日志内容,非常适合调试或监控服务运行状态。
查看日志的最后 N 行(tail -n)
tail -n 100 /var/log/httpd/error.log
查看日志的最后 100 行,适合快速定位问题。
按时间范围过滤日志(journalctl)
journalctl --since "2025-04-05 10:00:00" --until "2025-04-05 12:00:00"
查看服务日志(journalctl -u)
journalctl -u nginx.service适用于 systemd 简化服务日志查看。
查看用户登录日志(last)
last显示所有用户的登录历史记录。
查看登录失败日志(grep + auth.log)
grep "Failed password" /var/log/auth.log
适用于排查 SSH 暴力破解行为。
查看 Apache / Nginx 日志
Apache:/var/log/apache2/access.log 和 /var/log/apache2/error.log;
Nginx:/var/log/nginx/access.log 和 /var/log/nginx/error.log;
可使用 tail、grep、cat 等命令查看。
虽然 Linux 日志机制基本一致,但不同发行版的默认日志路径略有差异:
Debian/Ubuntu 系统日志路径
系统日志:/var/log/syslog;
安全日志:/var/log/auth.log;
内核日志:/var/log/dmesg;
启动日志:/var/log/boot.log;
应用日志:如 /var/log/apache2/、/var/log/mysql/ 等。
CentOS/RHEL 系统日志路径
系统日志:/var/log/messages;
安全日志:/var/log/secure;
内核日志:/var/log/dmesg;
启动日志:/var/log/boot.log;
其他服务日志:如 /var/log/httpd/、/var/log/mysqld.log 等。
使用命令自动识别日志路径
ls /var/log/
查看 /var/log/ 下的所有日志文件,快速定位所需日志。
排查服务启动失败原因
journalctl -u nginx.service -b
查看 Nginx 服务本次启动的日志。
监控实时日志(tail -f)
tail -f /var/log/secure
实时查看 SSH 登录尝试,防止非法访问。
搜索特定关键字日志(grep)
journalctl | grep "oom"
查找系统中是否发生过 OOM(内存溢出)事件。
查看系统启动日志(journalctl -b)
journalctl -b
显示本次系统启动以来的所有日志。
查看特定服务日志(journalctl -u)
journalctl -u mysql.service
查看 MySQL 服务的运行日志,定位数据库异常。
查看内核日志(dmesg)
dmesg | less
查看内核启动日志,排查硬件或驱动问题。
查看登录日志(last 和 grep)
last
grep "sshd" /var/log/secure
用于查看用户登录尝试、失败登录、成功登录等信息。
实时查看日志时结合 grep 过滤
tail -f /var/log/syslog | grep "error"
实时查看错误日志,提高排查效率。
查看日志时注意权限问题
某些日志需要 root 权限才能查看:
sudo tail -f /var/log/secure
查看日志时注意日志轮换(logrotate)
Linux 系统通常使用 logrotate 对日志进行压缩、归档,查看旧日志时可使用:
zcat /var/log/syslog.1.gz | less
使用 journalctl 查看日志时注意服务名称
使用 journalctl -u 时,需确保服务名称正确,如 nginx.service、sshd.service。
查看日志时注意日志级别(priority)
journalctl 支持按日志优先级查看:
journalctl -p err查看所有错误级别的日志。
查看日志时注意日志存储方式
在某些系统中,日志是内存日志(volatile)或持久化日志(persistent),可通过以下命令切换:
sudo mkdir /var/log/journal
启用持久化日志后,journalctl 可查看更久远的日志。
Linux 系统日志是运维、开发、安全分析中不可或缺的工具。掌握日志查看命令不仅能帮助我们快速定位系统问题,还能用于监控安全事件、分析服务状态、优化性能。
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
通过出发地、目的地、出发日期等信息查询航班信息。
通过站到站查询火车班次时刻表等信息,同时已集成至聚合MCP Server。火车票订票MCP不仅能赋予你的Agent火车时刻查询,还能支持在线订票能力。
通过车辆vin码查询车辆的过户次数等相关信息
验证银行卡、身份证、姓名、手机号是否一致并返回账户类型
查询个人是否存在高风险行为