当前位置: 首页 > news >正文

Linux 日志管理进阶

Linux 日志管理进阶

Linux 日志管理进阶笔记


一、日志轮替(logrotate)

1. 什么是日志轮替?

日志轮替是 Linux 中自动管理日志文件的机制:

  • 当日志文件达到指定条件(时间/大小)时,将旧日志改名备份,同时创建新的空日志文件。
  • 当备份日志数量超过设置值时,自动删除最旧的日志,避免日志文件过大占满磁盘。

2. 日志轮替的两种命名方式

配置方式 说明 示例
dateext 参数 按数字序号递增改名 securesecure.1secure.2 → ...
dateext 参数 以日期为后缀备份(推荐) secure-20201010secure-20201011

3. logrotate 配置详解

(1)全局配置文件

  • 主配置文件:/etc/logrotate.conf
  • 子配置目录:/etc/logrotate.d/(推荐在此目录单独配置,避免主文件过于臃肿)

(2)核心配置参数

参数 说明
daily/weekly/monthly 轮替周期:每天/每周/每月
rotate 数字 保留的备份日志数量(0=不保留备份)
compress 轮替后自动压缩旧日志
create mode owner group 创建新日志文件,并指定权限、所有者、所属组
mail address 轮替日志出错时,发送邮件通知
missingok 日志文件不存在时,忽略警告信息
notifempty 日志为空时,不执行轮替
minsize 大小 日志文件必须达到指定大小才轮替(即使时间周期到了也不轮替)
size 大小 仅按文件大小轮替,不按时间
dateext 使用日期作为备份日志的后缀
prerotate/endscript 轮替前执行的脚本命令
postrotate/endscript 轮替后执行的脚本命令

4. 配置示例:自定义日志轮替

方式1:在 /etc/logrotate.conf 中直接配置

/var/log/hsp.log {missingokdailycopytruncaterotate 7notifempty
}

方式2:在 /etc/logrotate.d/ 中创建子配置文件(推荐)

  1. 创建配置文件:/etc/logrotate.d/hsplog
    touch /etc/logrotate.d/hsplog
    
  2. 写入配置内容:
    /var/log/hsp.log {missingokdailycopytruncaterotate 7notifempty
    }
    
  3. 配置自动被主文件 include 读取,无需额外操作。

二、系统内存日志:journalctl

1. 什么是内存日志?

journalctl 用于查看 systemd 管理的内存日志,特点是:

  • 日志存储在内存中,重启系统后会被清空。
  • 可查看系统启动后的所有服务、内核日志,支持按时间、服务、进程过滤。

2. 常用命令

# 查看所有内存日志
journalctl# 查看最新的3条日志
journalctl -n 3# 查看指定时间段的日志
journalctl --since "19:00" --until "19:10:10"# 查看错误级别日志
journalctl -p err# 查看详细日志内容
journalctl -o verbose# 查看指定进程/服务的日志
journalctl _PID=1245 _COMM=sshd# 过滤sshd服务的日志
journalctl | grep sshd

三、实战案例:数据库备份 Shell 脚本

1. 需求分析

  • 每天凌晨 2:30 备份 hspedu 数据库到 /data/backup/db 目录。
  • 备份开始/结束时输出提示信息。
  • 备份文件以时间命名(如 2021-03-12_230201.tar.gz)。
  • 自动删除 10 天前的备份文件。

2. 脚本实现

#!/bin/bash# 备份目录
BACKUP=/data/backup/db
# 当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo "备份开始,时间:$DATETIME"# 数据库配置
HOST=localhost
DB_USER=root
DB_PW=hspedu100
DATABASE=hspedu# 创建备份目录(不存在则创建)
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"# 备份数据库并压缩
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/${DATETIME}.sql.gz# 打包为tar.gz格式
cd ${BACKUP}
tar -zcvf ${DATETIME}.tar.gz ${DATETIME}
rm -rf ${BACKUP}/${DATETIME}# 删除10天前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;echo "备份数据库${DATABASE}成功~"

3. 定时任务配置(crontab)

# 编辑定时任务
crontab -e# 添加以下内容,每天凌晨2:30执行脚本
30 2 * * * /usr/local/bin/db_backup.sh

四、CentOS 7/8 日志管理对比

特性 CentOS 7 CentOS 8
日志服务 rsyslogd(主日志)+ journald(内存日志) 同样支持两者,journalctl 功能增强
日志轮替 logrotate 工具,配置文件路径不变 logrotate 兼容,推荐使用 /etc/logrotate.d/ 子配置
内存日志 journalctl 命令,重启清空 journalctl 命令支持更多过滤选项

五、日志管理最佳实践

  1. 轮替策略:重要日志(如 /var/log/secure)建议设置 daily 轮替,保留 30 天备份。
  2. 压缩备份:开启 compress 参数,节省磁盘空间。
  3. 定期清理:结合 find 命令,删除过期日志文件。
  4. 权限控制:日志文件权限设为 600,避免敏感信息泄露。
http://www.zskr.cn/news/1312233.html

相关文章:

  • 3个实战技巧:深度掌握OBS StreamFX插件的专业级应用
  • 告别手动计算!手把手教你用MCAL配置英飞凌Aurix2G的GTM模块时钟(CMU篇)
  • 魔兽争霸3终极优化指南:三步解决卡顿掉帧显示异常难题
  • openDCIM三漏洞链深度解析:AI Vulnhuntr自动化0day RCE在野利用全复盘
  • 借助Taotoken用量看板,精细化分析团队大模型API消耗趋势
  • 终极硬件调优指南:如何用UXTU免费解锁电脑隐藏性能
  • HarmonyOS ArkWeb 系列之页面预连接与 DNS 预解析:prepareForPageLoad 加速首屏
  • 3分钟搞定!3DS游戏格式转换神器:让.3ds文件秒变可安装的CIA格式 [特殊字符]
  • NotebookLM去重效率翻3倍:实测验证的7步精准过滤工作流
  • 2026年内墙仿石漆经销商哪家好:行业主流品牌实力分析与适配选择指南 - 万事通达
  • 免费开源OCR终极方案:3步实现高效文字识别与PDF转换
  • Linux 日志管理
  • 手把手教你用Python和SAM搞定CHAOS医学CT数据预处理(附完整代码)
  • REFramework深度解析:如何为RE引擎游戏打造稳定可靠的模组平台
  • 西门子S7-200 PLC步进控制实战:手把手教你用SM66.7状态位实现精准启停与循环
  • 为什么你的电脑音质总是不满意?3步搞定系统级音频优化
  • 如何用3分钟永久保存你的B站缓存视频?m4s-converter详细使用指南
  • Honey Select 2终极汉化去码补丁:5分钟完整安装与优化指南
  • 英雄联盟R3nzSkin内存换肤:终极安全换肤指南
  • 权威推荐!低查重AI教材编写工具,一键生成20万专业教材书稿!
  • MobaXterm实战:一站式打通串口调试与远程SSH管理
  • NotebookLM+STK+Python航天仿真链路搭建:从PDF论文到Orbital Mechanics可视化模型仅需11步(含NASA开源数据集适配秘钥)
  • 创业团队如何利用Taotoken的TokenPlan有效控制AI开发成本
  • 基于rsync的嵌入式Ubuntu系统镜像定制与批量部署实战
  • Windows Cleaner:拯救C盘爆红的终极免费解决方案
  • Windows Cleaner:拯救C盘爆红的终极免费解决方案
  • FanControl 267版:Windows电脑风扇噪音终极解决方案
  • FanControl 267版:Windows电脑风扇噪音终极解决方案
  • Claude Code交互式提示词:让AI听懂你的10个技巧
  • Orange Pi i 96开发板实战:从硬件解析到家庭服务器与物联网应用部署