1.编写定时切割日志的shell脚本
#!/bin/bash
#filename: split-log.sh
#desc: 切割日志
#author: Hyy
#date: 2021-10-20
## 切割时间 分别对应年月日
SPLIT_DATE=$(date +%y%m%d)
## 复制日志文件到指定文件夹history中
cp {日志存放路径}/{日志文件名}.log {目标文件夹}/history/{日志文件名}.${SPLIT_DATE}.log
## 清空原始日志文件,“>”是某文件输入,“>>”是想某文件末尾追加,注意区别
echo "" > {日志存放路径}/{日志文件名}.log
2.编写删除过期日志的shell脚本
#!/bin/bash
## filename: delete-log.sh
## desc: 定时清理日志文件
## author: hyy
## date: 2021-10-22
## 从历史日志存放位置中找到超过三天的日志文件,将其移到回收站
find {历史日志存放路径}/history/ -mtime +3 -name "*.log" | xargs -i mv {} {回收站路径}/recycleBin/
## 删除回收站中的“.log”结尾的日志文件
find {回收站路径}/recycleBin/ -name "*.log" -exec rm -rf {} \
对这些命令不熟悉可以通过 {command} --help查看详细介绍。
3.给脚本可执行的权限
chmod +X split-log.sh/delete-log.sh
4.设置定时任务
使用crontab设置定时任务,使用命令crontab -e进入编辑页面,键入下面的内容。
0 5 * * * {shell脚本路径}/split-log.sh
1 5 * * * {shell脚本路径}/delete-log.sh
这里代码的意思是,每天的早上5点执行切割日志的shell脚本,五点零一分执行清除日志文件的shell脚本。
* * * * * {执行命令}
## 第一个星号是指分钟,第二个是小时,第三个是天,第四个是月,第五个是星期
0 6 1 * * {执行命令}
## 这里就是每月一号6点执行某命令
可以使用crontab -l命令查看保存的任务。