Linux 下常用日志查询工具

journalctl

journalctl 是 systemd 的日志管理工具,用于查询 systemd 的日志管理系统 (journal) 中的日志。它整合了系统和服务的所有日志信息。

常用命令:

  1. 查看全部日志:
journalctl
  1. 查看最新日志并持续监控
journalctl -f
  1. 查看本次启动的日志:
journalctl -b
  1. 查看特定服务的日志:
journalctl -u ssh    # SSH服务
journalctl -u nginx  # Nginx服务
  1. 按时间过滤:
journalctl --since "2024-01-01"
journalctl --since "1 hour ago"
  1. 查看特定优先级的日志:
journalctl -p err    # 错误级别
journalctl -p info   # 信息级别
  1. 查看内核日志
journalctl -k

dmesg

dmesg 主要用于查看内核环形缓冲区(kernel ring buffer)的消息,包含以下主要类型的日志:

  1. 硬件相关;
    1. cpu
    2. memory
    3. sda
    4. usb
    5. pci
  2. 驱动程序信息;
    1. eth
    2. wifi
    3. nvidia
    4. audio
  3. 系统启动信息;

注意:

  • dmesg 只显示内核消息
  • 重启后环形缓冲区会清空
  • 需要 root 权限查看完整信息

/var/log/syslog

/var/log/syslog包含以下类型的系统日志:

  1. 系统组件日志:
  • 系统启动消息
  • 守护进程活动
  • 定时任务执行记录
  • 系统服务状态变化
  • 系统进程信息
  1. 硬件相关:
  • 硬件检测信息
  • 设备连接/断开事件
  • 硬件错误报告
  • 驱动程序消息
  1. 软件应用:
  • 应用程序启动/关闭
  • 程序错误消息
  • 应用crash信息
  • 软件更新记录
  1. 网络相关:
  • 网络接口状态
  • 网络连接事件
  • DHCP事务
  • 网络服务消息

journalctl 包含了 /var/log/syslog 中的所有信息。

/var/log/syslog

/var/log/messages 是 Red Hat/CentOS 系统中的主要系统日志文件(相当于 Ubuntu/Debian 中的 /var/log/syslog)。

last

显示登录历史