背景:由于环境中日志文件快速生成,内存容易满,导致程序无法运行。
方案:编写shell脚本,定时删除或者置空较大文件。
步骤1:cd /进入根目录;
步骤2:du -sh ./* 查看目录占用内存情况;
步骤3:一级一级进入占用内存最大的目录下,执行pwd查看当前目录。
步骤4:准备shell脚本文件cleanLog.sh;
步骤5:在cleanLog.sh文件中编写shell脚本:
find /var/lib/log/ -name "*-json.log" -type f -print -exec truncate -s 0 {} \;
find 路径 -name "文件名" -type f -print -exec truncate -s 0 {} \; #清空文件内容
find 路径 -mtime +天数 -type f -name "文件名" -exec rm -rf {} ; #删除文件
清空文件内容和删除文件的脚本内容可根据自己情况进行选择,个人建议选择清空文件内容,由于我自己的大日志文件在docker中,直接删除只会解除链接,并不会释放内存,因为此时 docker还在运行。
步骤6:将编写好的cleanLog.sh上传至服务器任意目录;
步骤7:cd 进入步骤6的目录,执行如下命令进行权限分配:
chmod +x cleanLog.sh
步骤8:添加服务器定时任务:
-
crontab -l,查看定时任务
-
crontab -e,编辑定时任务
crontab -e
10 0 * * * /上传目录/cleanLog.sh
M: 分钟(0-59)。每分钟用*或者 */1表示
H:小时(0-23)。(0表示0点)
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
我设置的是每每天0点10分执行。
然后保存退出,然后
使用指令重启crontab 服务,让配置生效
service crond restart
生效后,可以执行crontab -l命令,查看定时任务,到这里Linux定时删除日志就创建完成了。