Linux笔记之系统日志

Linux系统日志是系统管理员监控、排查和调试的重要工具。日志记录系统和服务的运行信息,存储在系统的特定位置并通过工具进行管理。本章将详细讲解日志的查看与管理、日志轮转与压缩。


一、Linux系统日志概述

1、什么是系统日志

系统日志是Linux系统记录系统事件和服务运行信息的文本文件,主要包括以下内容:

  • 内核日志:记录系统启动、硬件信息等(如dmesg)。
  • 系统日志:记录系统服务和用户活动(如syslog)。
  • 应用日志:记录应用程序运行的相关信息。

二、日志的存储位置

Linux的日志文件主要存储在/var/log目录下:

  • /var/log/syslog:存储通用系统日志信息(Debian/Ubuntu)。
  • /var/log/messages:存储系统服务相关日志(Red Hat/CentOS)。
  • /var/log/dmesg:存储内核启动信息。
  • /var/log/auth.log:记录用户认证相关日志。
  • /var/log/boot.log:记录系统启动日志。
  • /var/log/kern.log:记录内核相关日志。
  • /var/log/secure:记录安全相关事件(如登录、认证)。

三、日志查看与管理

1、查看日志文件

使用catmoreless等工具可以直接查看日志文件。例如:

  • 查看syslog日志

    sudo cat /var/log/syslog
    
  • 分页查看auth.log日志

    sudo less /var/log/auth.log
    

2、使用journalctl查看日志

journalctlsystemd管理的系统日志查看工具,提供更强大的过滤和格式化功能。

基本命令

  • 查看所有日志

    journalctl
    

    输出结果示例

    -- Logs begin at Mon 2024-11-11 09:00:00 CST, end at Sat 2024-11-18 12:00:00 CST. --
    Nov 18 12:00:01 hostname systemd[1]: Starting Session 1 of user root.
    Nov 18 12:00:01 hostname CRON[1234]: (root) CMD (/usr/bin/updatedb)
    
  • 查看实时日志

    journalctl -f
    

过滤日志

  • 按时间过滤
    查看当天的日志:

    journalctl --since "today"
    
  • 按服务过滤
    查看nginx服务的日志:

    journalctl -u nginx
    
  • 按内核日志过滤

    journalctl -k
    

3、使用dmesg查看内核日志

dmesg用于查看内核环形缓冲区中的信息,通常包含启动信息和硬件日志。

  • 查看完整内核日志

    dmesg
    
  • 实时查看内核日志

    dmesg -w
    
  • 筛选特定关键词
    查看与网络相关的日志:

    dmesg | grep -i net
    

四、日志轮转与压缩

1、什么是日志轮转

日志轮转是一种管理日志文件大小的机制。通过轮转,旧日志文件会被重命名或压缩,新的日志记录写入新的文件。

  • 轮转文件命名规则/var/log/syslog.1/var/log/syslog.2.gz
  • 压缩方式:旧日志通常压缩为.gz格式以节省空间。

2、日志轮转工具

Linux系统使用logrotate工具自动实现日志轮转。

logrotate配置文件

  • 全局配置:位于/etc/logrotate.conf
  • 服务配置:位于/etc/logrotate.d/目录下。

3、logrotate命令示例

配置文件内容示例

/var/log/nginx日志轮转为例:

/var/log/nginx/*.log {
    daily                # 每天轮转
    rotate 7             # 保留7个日志文件
    compress             # 压缩旧日志
    delaycompress        # 延迟一轮后再压缩
    missingok            # 如果日志文件缺失,不报错
    notifempty           # 如果日志文件为空,不轮转
    create 0640 nginx adm # 创建新日志文件
    postrotate           # 轮转后执行操作
        systemctl reload nginx > /dev/null
    endscript
}

手动执行日志轮转

  • 测试配置文件

    sudo logrotate -d /etc/logrotate.conf
    
  • 强制执行日志轮转

    sudo logrotate -f /etc/logrotate.conf
    

输出结果示例

rotating pattern: /var/log/nginx/*.log  after 1 days (7 rotations)
...
compressing log with: /bin/gzip
renaming /var/log/nginx/access.log.1 to /var/log/nginx/access.log.2.gz

五、小结

通过本章学习,你已经掌握了以下内容:

  1. 日志查看与管理

    • 使用journalctldmesg、日志文件直接查看系统日志。
    • 通过过滤条件精准定位特定日志信息。
  2. 日志轮转与压缩

    • 使用logrotate实现自动化日志管理,避免日志占用过多磁盘空间。

日志是Linux系统的重要组成部分,熟练掌握日志管理技能,可以更高效地维护和排查系统问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人间酒中仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值