定时清理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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了