linux 定期清除日志
1. 方法
- 定义清除日志目录的shell 脚本
- 启动linux crontab 定时任务执行脚本
- 该测试时在
root
用户下进行的测试
2. 定义shell脚本
2.1 脚本
2.1.1 config
logPath=/root/clean-log/logs/clean.log
paths=(
"/root/xxxx-console/logs"
"/root/xx-console/logs"
)
logPath
定义打印日志的位置
paths
定义删除日志路径数组
2.1.2 clean.sh
#! /bin/bash
source config
echo start clean... >> $logPath
for element in ${paths[@]}
do
starttime=$(date +%Y-%m-%d\ %H:%M:%S)
echo [$starttime]:$element >> $logPath
chmod -R 777 $element
filelist=$(ls $element)
for file in $filelist
do
if [ -f $element/$file ]
then
suffix=`echo ${file##*.}`
if [ $suffix == "log" ]
then
echo " " > $element/$file
fi
fi
done
#rm -f $element/*
done
echo end clean... >> $logPath
2.1 说明
- 修改
source config
为具体绝对路径 (source /root/clean-log/config
)- 循环遍历数组并且授权
chmod -R 777 $element
- 循环遍历文件夹下的文件,判断为
文件
且后缀为log
,清空文件内容ps: 清空而非删除文件,因为有些项目删除文件后就不再生成文件.导致后续日志无法监控
3. 定义定时任务
3.1 脚本
3.1.1 clean.crontab
0 2 * * * /root/clean-log/clean.sh
3.2 说明
- 0 2 * * * 为定义crontab 的周期 为每天凌晨
02:00
执行 /root/clean-log/clean.sh- 详细可以看Linux 定时任务
3.3 启动定时任务
crontab clean.crontab
3.4 关闭定时任务
- crontab -r
ps: crontab -r 是关闭当前用户所有的定时任务.慎用
- crontab -e 会打开编辑窗口,把想要删除的定时任务删掉即可