定时置空或者删除Linux目录下的日志文件

文章介绍了如何通过编写shell脚本来解决日志文件快速增长导致内存满的问题。首先,通过`du-sh`检查内存占用,然后进入占用空间大的目录。接着,创建`cleanLog.sh`脚本,使用`find`命令定位并操作日志文件,可以选择清空内容或删除。脚本完成后,设置执行权限,并用crontab配置定时任务,确保每天定点清理,以释放内存。特别提到,在docker环境中,直接删除可能不会释放内存,建议清空文件内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:由于环境中日志文件快速生成,内存容易满,导致程序无法运行。

方案:编写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:添加服务器定时任务:

  1. crontab -l,查看定时任务

  2. 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定时删除日志就创建完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值