Linux 自动化运维基础 —— 定时任务与日志轮转

Linux 自动化运维基础 —— 定时任务与日志轮转 Linux 自动化运维基础 —— 定时任务与日志轮转 目录 学习内容 模块一前置生存技能 —— Vim 编辑器基础1. Vim 的两种核心模式2. 安全逃生口诀必考 模块二定时任务管理 (Crontab)1. 标准时间格式五芒星法则2. Crontab 命令参数详解3. ⚠️ 避坑指南 坑 1时间字段与命令之间缺少空格 坑 2命令替换语法错误变量 vs 命令 坑 3致命的路径问题相对路径 vs 绝对路径 模块三日志轮转管理 (Logrotate)1. 核心配置文件解析 (/etc/logrotate.conf) 学习内容掌握crontab的语法规则。理解logrotate的工作原理。 模块一前置生存技能 —— Vim 编辑器基础教学背景在修改定时任务crontab -e或日志配置时系统默认调用vim。很多新手配置了半天最后因为不会退出导致前功尽弃。1. Vim 的两种核心模式命令模式默认模式用于移动光标、删除、复制。插入模式底部显示-- INSERT --用于输入文本。2. “安全逃生”口诀必考你的需求操作步骤严格按顺序命令含义保存并退出① 按ESC键 ② 输入:wq③ 按Enterwwrite(保存),qquit(退出)放弃修改强制退出① 按ESC键 ② 输入:q!③ 按Enter!强制执行无视未保存警告仅保存不退出① 按ESC键 ② 输入:w③ 按Enter写完配置想继续编辑时使用 模块二定时任务管理 (Crontab)教学背景Crontab 是 Linux 的“闹钟”但它的脾气非常古怪格式错一个空格或符号都会导致任务静默失败。1. 标准时间格式五芒星法则* * * * * 要执行的命令 分 时 日 月 周特殊符号*(任意),,(离散时间),-(连续区间),/n(每隔n次如*/2表示每2分钟)。2. Crontab 命令参数详解下表列出了 crontab 命令的常用参数及其功能参数功能说明示例-e编辑当前用户的 crontab 文件crontab -e-l列出当前用户的 crontab 内容crontab -l-r删除当前用户的 crontab 文件慎用crontab -r-u指定用户需 root 权限crontab -u www-data -e-i与-r配合使用删除前确认crontab -ri使用提示编辑时默认使用vim编辑器-r会直接删除所有定时任务无确认提示建议先用-l备份3. ⚠️ 避坑指南这是本节课的重中之重请对比以下“错误示范”与“正确写法” 坑 1时间字段与命令之间“缺少空格”❌错误*/2 * * * *echo hello(系统把*echo当成星期字段直接报错拒绝保存)✅正确*/2 * * * * echo hello(第5个星号后必须有空格) 坑 2命令替换语法错误变量 vs 命令❌错误echo $date(系统会去寻找名为 date 的变量输出为空)✅正确echo $(date)($()才是执行命令并获取结果的标准语法) 坑 3致命的路径问题相对路径 vs 绝对路径❌错误 log.txt(Crontab 执行环境没有你当前的终端上下文文件不知道写哪去了)✅正确 /home/lfh/log.txt(永远使用绝对路径) 模块三日志轮转管理 (Logrotate)教学背景定时任务不断写日志硬盘迟早会爆。logrotate就是系统的“清道夫”自动切割、压缩、清理旧日志。1. 核心配置文件解析 (/etc/logrotate.conf)conf----configuration配置文件通过翻译主配置文件掌握全局默认规则核心参数含义企业级建议weekly/daily轮转周期每周/每天核心业务日志建议dailyrotate 4保留历史备份的份数根据审计合规要求设置如保留 6 个月create切割后自动创建同名空文件必须开启否则程序可能因找不到文件而停止写日志dateext归档文件使用日期后缀强烈建议开启方便排查历史问题compress压缩旧日志 (gzip)强烈建议开启节省 90% 磁盘空间missingok文件不存在时不报错推荐开启防止偶发错误中断整个轮转任务minsize 1M文件大于 1M 才触发轮转防止切割出大量几 KB 的无用碎片文件vim/etc/logrotate.conf解读logrotate.conf# see man logrotate for details# 详见 man logrotate 手册获取详细信息# rotate log files weekly# 默认每周轮转切割一次日志文件weekly# keep 4 weeks worth of backlogs# 保留 4 份历史备份日志即保留 4 周的记录rotate4# create new (empty) log files after rotating old ones# 在旧日志被轮转后自动创建新的空日志文件create# use date as a suffix of the rotated file# 使用日期作为轮转后归档文件的后缀例如log.txt-20260608dateext# uncomment this if you want your log files compressed# 如果你希望压缩归档的日志文件以节省空间请取消下面这行的注释#compress# RPM packages drop log rotation information into this directory# RPM 软件包会将各自的日志轮转配置规则文件存放在这个目录下引入该目录下的所有配置include /etc/logrotate.d# no packages own wtmp and btmp -- well rotate them here# 没有特定的软件包负责管理 wtmp 和 btmp 文件 —— 所以我们在这里直接配置它们的轮转规则/var/log/wtmp{monthly# 每月轮转一次create 0664 root utmp# 轮转后创建新文件权限设为 0664属主为 root属组为 utmpminsize 1M# 只有当文件大小至少达到 1MB 时才执行轮转rotate1# 只保留 1 份历史备份}/var/log/btmp{missingok# 如果日志文件不存在丢失不报错并继续执行monthly# 每月轮转一次create 0600 root utmp# 轮转后创建新文件权限设为 0600仅属主可读写属主为 root属组为 utmprotate1# 只保留 1 份历史备份}# system-specific logs may be also be configured here.# 系统特定的其他日志轮转规则也可以直接配置在这里但通常推荐写在 /etc/logrotate.d/ 目录下。