全文目录
- 1 Linux 系统日志分类及功能
- 1.1 通用日志
- 1.1.1 /var/log/messages
- 1.1.2 /var/log/syslog
- 1.2 安全相关日志
- 1.2.1 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS)
- 1.2.2 /var/log/audit/audit.log
- 1.3 启动与内核日志
- 1.3.1 /var/log/boot.log
- 1.3.2 /var/log/dmesg
- 1.4 用户与登录日志
- 1.4.1 /var/log/wtmp
- 1.4.2 /var/log/btmp
- 1.4.3 /var/log/lastlog
- 1.5 其他日志
- 1.5.1 /var/log/cron
- 1.5.2 /var/log/mail.log
- 1.5.3 /var/log/yum.log
- 2 查看日志常用方法说明
- 2.1 基础命令
- 2.2 专用工具
- 2.2.1 journalctl
- 2.2.2 dmesg
- 2.3 实时监控
- 3 注意事项
- 4 参考文献
写在前面:Linux 系统日志有哪些作用
Linux 系统日志记录了系统的关键状态信息,是系统运行监测的重要组成部分。作为运维人员或机器管理员熟练的掌握系统日志的作用及使用查看方式,对我们进行故障排查(系统启动、服务异常、硬件错误等信息,便于定位问题)、安全审计(追踪用户登录、权限变更、可疑行为等,检测未授权访问)、行为追踪(记录用户操作、定时任务执行、服务运行状态等)及性能监控(分析系统资源使用情况、网络活动等)等具有重要的指引,能够有效快速的帮助我们去定位并解决问题。
1 Linux 系统日志分类及功能
1.1 通用日志
1.1.1 /var/log/messages
- 功能: 记录系统级通用信息(如启动、服务错误、硬件事件)
- 查看方式:
cat /var/log/messages 或 less /var/log/messages
- 结果展示: 如下
Apr 17 10:15:14 xxx-server systemd: Device dev-disk-by\x2dpartlabel-primary.device appeared twice with different sysfs paths /sys/devices/pci0000:00/0000:00:01.0/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda2 and /sys/devices/pci0000:00/0000:00:01.0/0000:03:00.0/host0/target0:1:0/0:1:0:1/block/sdb/sdb1
Apr 17 10:15:14 xxx-server systemd: Device dev-disk-by\x2dpartlabel-primary.device appeared twice with different sysfs paths /sys/devices/pci0000:00/0000:00:01.0/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda2 and /sys/devices/pci0000:00/0000:00:01.0/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda4
Apr 17 10:25:01 xxx-server systemd: Created slice user-991.slice.
Apr 17 10:25:01 xxx-server systemd: Starting user-991.slice.
Apr 17 10:25:01 xxx-server systemd: Starting Session 614006 of user root.
Apr 17 10:25:01 xxx-server systemd: Removed slice user-991.slice.
Apr 17 10:25:01 xxx-server systemd: Stopping user-991.slice.
1.1.2 /var/log/syslog
- 功能: 存储全局系统活动(网络事件、服务日志等),Ubuntu 等发行版的核心日志
- 查看方式:
tail -f /var/log/syslog
(实时跟踪)
1.2 安全相关日志
1.2.1 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS)
- 功能: 记录用户登录、SSH 连接、sudo 操作等身份验证事件
- 查看方式:
grep "Failed" /var/log/auth.log
(过滤失败登录) - 结果展示: /var/log/secure
Apr 17 10:30:01 xxx-server su: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/timeout 240 /bin/python2 /usr/local/xxx/xxx/xxx.py -u
Apr 17 10:36:37 xxx-server sss[20994]: Accepted password for zhangsan1 from 1.1.1.1 port 3183398 ssh2
Apr 17 10:36:37 xxx-server sss[20994]: pam_unix(sss:session): session opened for user zhangsan1 by (uid=0)
Apr 17 10:36:37 xxx-server sss[20994]: pam_sss(sss:session): Request to sssd failed. Connection refused
Apr 17 10:36:43 xxx-server sudo: zhangsan1 : TTY=pts/1 ; PWD=/home/xxx/zhangsan1 ; USER=root ; COMMAND=/bin/su -
Apr 17 10:36:43 xxx-server su: pam_unix(su-l:session): session opened for user root by zhangsan1(uid=0)
Apr 17 10:37:59 xxx-server sss[36641]: Received disconnect from 1.1.1.1: 11: disconnected by user
Apr 17 10:37:59 xxx-server su: pam_unix(su-l:session): session closed for user root
1.2.2 /var/log/audit/audit.log
- 功能: 存储 SELinux 或安全策略触发的审计事件
- 查看方式: ausearch 或直接查看文件
1.3 启动与内核日志
1.3.1 /var/log/boot.log
- 功能: 系统启动过程的详细记录(服务加载、初始化脚本)
- 查看方式: journalctl -b(通过 systemd 查看)
1.3.2 /var/log/dmesg
- 功能: 内核启动时的硬件和驱动信息
- 普通查看: dmesg | less 或直接查看文件
- 带时间戳查看: 代码如下
dmesg_with_human_timestamps () {
$(type -P dmesg) "$@" | perl -w -e 'use strict;
my ($uptime) = do { local @ARGV="/proc/uptime";<>}; ($uptime) = ($uptime =~ /^(\d+)\./);
foreach my $line (<>) {
printf( ($line=~/^\[\s*(\d+)\.\d+\](.+)/) ? ( "[%s]%s\n", scalar localtime(time - $uptime + $1), $2 ) : $line )
}'
}
alias dmesg=dmesg_with_human_timestamps
- 日志信息: 如下图
1.4 用户与登录日志
1.4.1 /var/log/wtmp
- 功能: 永久记录用户登录、注销及系统启动/关机事件
- 查看方式: last 命令,可配合grep使用
last 参数说明:
-a 把从何处登入系统的主机名称或ip地址,显示在最后一行。
-d 指定记录文件。指定记录文件。将IP地址转换成主机名称。
-f <记录文件> 指定记录文件。
-n <显示列数>或-<显示列数> 设置列出名单的显示列数。
-R 不显示登入系统的主机名称或IP地址。
-x 显示系统关机,重新开机,以及执行等级的改变等信息
日志展示:
zhangsan1 pts/1 server. Thu Apr 17 10:36 still logged in
zhangsan1 pts/0 server. Thu Apr 17 10:14 - 10:37 (00:23)
zhangsan1 pts/0 server. Mon Apr 14 19:11 - 19:35 (00:24)
zhangsan1 pts/1 server. Mon Apr 14 14:22 - 18:15 (03:52)
zhangsan1 pts/0 server. Mon Apr 14 14:22 - 18:15 (03:52)
zhangsan1 pts/1 server. Mon Apr 14 12:49 - 13:08 (00:18)
zhangsan1 pts/0 server. Mon Apr 14 12:45 - 13:07 (00:22)
zhangsan1 pts/0 server. Mon Apr 14 10:50 - 11:49 (00:58)
zhangsan1 pts/1 server. Sun Apr 13 23:01 - 23:53 (00:51)
zhangsan1 pts/0 server. Sun Apr 13 20:04 - 23:14 (03:09)
chensan2 pts/0 server. Wed Apr 9 11:36 - 14:43 (03:07)
1.4.2 /var/log/btmp
- 功能: 记录失败的登录尝试
- 查看方式: lastb 命令
1.4.3 /var/log/lastlog
- 功能: 显示用户最后一次登录的时间及来源
- 查看方式: lastlog 命令
1.5 其他日志
1.5.1 /var/log/cron
- 功能: 定时任务(cron)的执行记录
- 查看方式:
grep "CRON" /var/log/syslog
(部分系统)
1.5.2 /var/log/mail.log
- 功能: 邮件服务(如 Postfix)的收发日志
- 查看方式:
tail /var/log/mail.log
1.5.3 /var/log/yum.log
- 功能: 使用yum安装软件包的相关日志
- 查看方式:
tail /var/log/yum.log
2 查看日志常用方法说明
2.1 基础命令
-
cat/less/tail
:直接查看文件内容,如 tail -n 50 /var/log/syslog -
grep
:过滤关键词,如 grep “error” /var/log/messages更加系统的了解更多文件处理命令,请移步《 Linux日志处理命令完全解构:从文件读取原理到百万级日志性能调优》
2.2 专用工具
2.2.1 journalctl
- 命令说明:journalctl 是 Linux 系统中用于查询和管理 systemd 日志的核心工具,支持对系统日志、内核日志、服务单元日志等进行高效检索和分析。其日志数据以二进制格式存储,支持动态过滤、时间范围筛选和多条件组合查询,适用于系统运维、故障排查及性能监控等场景
- 命令使用
journalctl [选项] [筛选条件]
- 参数说明
-n <行数> # 显示最近的指定行数日志(如 -n 20 显示最近20条日志)
-f # 实时跟踪最新日志(类似 tail -f)
-u <服务名> # 查看指定服务的日志(如 -u nginx.service)
-k # 仅显示内核日志
-p <优先级> # 按日志优先级过滤(如 -p err 显示错误级别日志)
--since <时间> # 指定起始时间(如 --since "2025-04-19 09:00:00")
--until <时间> # 指定结束时间(如 --until "1 hour ago")
-b [IDX] # 查看特定启动周期的日志(-b -1 表示上一次启动的日志)
_COMM=<进程名> # 按进程名称过滤(如 _COMM=sshd 查看 SSH 进程日志)
- 使用场景
journalctl -f
# 查看实时日志journalctl -u docker
# 查看服务单元日志journalctl --since "08:00" --until "11:00" -p err
# 筛选时间范围内的错误日志journalctl -b -1 -p 0..3
# 分析启动问题(查看上一次启动的错误日志)
2.2.2 dmesg
- dmesg:实时查看内核消息,如
dmesg --follow
2.3 实时监控
- ausearch:分析审计日志(需安装 auditd 服务)
3 注意事项
- 不同发行版日志路径可能不同(如 Debian 用 auth.log,RHEL 用 secure)
- 需要 root 权限查看部分日志(如 /var/log/secure)
- 日志轮转机制(logrotate)可能影响历史日志的存储周期
4 参考文献
文献1|文献2|文献3|文献4|文献5
写在最后
以上是关于 Linux 系统日志的分析与整理(可能不全),希望能够帮助大家理清思路,对 Linux 的系统日志有更加深入的了解,同时如果有错误,也欢迎大家的评论指正,共同进步!