日常日志清理脚本:
1.压缩文件
SUFFIX=$(date -d yesterday +%Y-%m-%d)
CURRENT=$(date '+%s')
echo $CURRENT
#压缩
FILES=(/data/logs/shop/nohup)
for file in "${FILES[@]}";do
echo $file
FILENAME="$file.$SUFFIX.$CURRENT.gz"
echo $FILENAME
gzip -c $file > $FILENAME
echo -n > $file
done
echo 'compress end'
有些文件是一直在滚,所以需要定时压缩,节省磁盘空间。一般是配合linux定时crontab,将文件切割成以日期为结尾文件,如/data/logs/shop/nohup 文件,
最终会切割成nohup.2023-08-21.1692669216.gz,每天压缩一个。
2.清理N天前的日志文件
mtime=14
LOG_DIRS=(/data/logs/shop)
for log_dir in "${LOG_DIRS[@]}";do
find $log_dir -mtime +$mtime -name "*.log" -exec rm -rf {} \;
find $log_dir -mtime +$mtime -name "*.gz" -exec rm -rf {} \;
done
echo 'delete log end'
找到14天前的以.log,.gz结尾的日志文件,全干掉
3.删除过期的代码包
一般线上环境会以软链接形式发布代码包,方便回滚。
但是代码包会越来越多,所以也需要定期清理
LEFT_PACKAGE_NUM=7
APP_DIR='/data/code/'
#app的名称
APPS=(shop)
for APP in "${APPS[@]}";do
ls -l -t $APP_DIR |grep $APP | tail -n +$LEFT_PACKAGE_NUM | awk 'BEGIN {FS=" "} {print $NF}' |xargs -i rm -rf $APP_DIR{}
done
因为有软连接存在,实际上剩余线上发布包的packgeNum是7-2=5个