客户有一台linux虚拟机(基于centos7),业务部署在docker,docker运行的日志特别大,跟客户确认后日志无需备份,只需定时清理

#!/bin/sh  
time=$(date "+%Y-%m-%d %H:%M:%S")
echo "---------------------------------------------------------------------------"
echo "----- start clean docker containers logs on ${time} ----"  
  
logs=$(find /var/lib/docker/containers -name '*-json.log' )  
for log in $logs  
        do  
                du -h  $log
                cat /dev/null > $log  
        done  

echo "--- end clean docker containers logs on ${time}   -----"

#注释
## #!宣告本shell执行的shell解释器

#设定时间输出格式 为 年-月-日 小时:分钟:秒

#在脚本执行开始之前输出分隔符,宣告开始执行清理脚本并打印当前时间

# 查询日志文件名 find /目录 -name 模糊日志名(可通过前缀后缀匹配)

for 变量 in 所在文件或者取值范围
           do(执行)
                 du -h $log   查看并打印出log文件大小
                 cat /dev/null 直接将空设备文件重定向到log 等于清空此log文件
           done(脚本完成)

#####宣告执行完成docker日志清理并打印执行完成此刻时间

编辑定时任务 crontab -e 

40 17 */2 * * /usr/bin/sh /usr/local/autoclear_docker_log.sh >> /usr/local/autoclear_docker_log.log


-e 编辑edit

分钟(00-59) 小时(0-23) 天(1-31) 月份(1-12)天(0-6) 默认执行的shell 脚本 >>重定向 .log日志

每两天17:40分执行脚本autoclear_docker_log.sh日志并将执行记录写入到同目录下log日志中

---systemctl restart crond 重启定时任务服务使之生效

---systemctl enable crond 将crond 加入到开机启动项

---sytemctl is-enabled crond 查询crond是否开机自启动,disable or enable

或使用查看全部系统服务grep的方式查看是否enable
---systemctl list-unit-files | grep crond 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐