定时清理docker日志

1、编辑脚本

vim docker_log_clear.sh


#!/bin/bash

#docker的日志是以json.log结尾的,存放路径自己查看:docker info | grep Dir

#获取容器的日志文件名

logs=$(find /data//docker/data/containers/ -name *json.log)

#获取时间格式:yyyy-mm-dd

date=`date +%F`

#创建目录备份日志,按日期目录存放
mkdir -p /data/docker_log_backup/$date

#下面的不行用这个:for log in ${logs[*]}

for log in $logs
do

#将日志备份到/data/docker_log_bakup

cp -rf $log /data/docker_log_backup/$date/

 

#插入空数据到日志

cat /dev/null > $log
done

#同时删除7天前的备份

find /data/docker_log_backup -maxdepth 1 -type d -mtime +7 | xargs rm -rf

 

或者

 

 

#!/bin/bash

#只清理特定容器的日志

logs[0]="`find /var/lib/docker/containers/ -name *bf397bf40aa9*json.log`"
logs[1]="`find /var/lib/docker/containers/ -name *c9a0570565a3*json.log`"

#踩坑:明明没有给log[2]赋值,但是测试输出logs[2]与logs[1]值一样,没办法logs[2]=""赋空值值
logs[2]=""

date=`date +%F`

mkdir -p /data/docker_log_backup/$date

for log in ${logs[*]}
do

cp -rf $log /data/docker_log_backup/$date/

cat /dev/null > $log
#echo $log >>/data/docker_log_backup/2.log
done

find /data/docker_log_backup -maxdepth 1 -type d -mtime +30 | xargs rm -rf

2、给脚本添加执行权限

chmod +x docker_log_clear.sh

3、添加计划任务

crontab -e

添加任务,每天的23:20执行

30 23  * * * docker_log_clear.sh > /dev/null 2>&1 

posted @ 2022-08-31 09:06  leihongnu  阅读(936)  评论(0编辑  收藏  举报