shell脚本定时删除大小超200M的日志文件

文章讲述了如何通过编写Linux脚本来查找并删除超过特定大小的日志文件,以及如何设置cron定时任务来定期执行该脚本。作者遇到了权限问题和因在Windows环境下编辑脚本导致的格式错误,最终解决了这些问题,确保了脚本的正确执行。
摘要由CSDN通过智能技术生成

需求

        某个服务器的日志文件随着时间的增长越来越多,我不想自己一个个的删除,但是不删除的话,会很麻烦,万一因为日志文件导致内存满了就麻烦了!


实现步骤

1、写好实现的脚本

我要查找>200M的日志文件

find / -type f -size +200M -name "*.log"

2、删除脚本的命令

进入目录 cd /dev

创建文件夹 mkdir sh

进入文件夹 cd sh

创建脚本文件 touch delete_log.sh

编辑脚本文件 vi delete_log.sh

内容如下

#!/bin/bash
for name in $(find / -type f -size +100M -name "*.log");do
        rm -rf ${name}
done


在执行脚本之前,我们要看看是否有大小大于100M的日志文件

sudo find / -type f -size +100M -name "*.log"

有三个符合的日志文件;

现在我创建一个定时任务

这个是编辑定时任务

crontab -e

59 13 * * * /dev/sh/delete_log.sh

当前是13:58 我希望13:59执行一次

等一下把

判断脚本是否有效,就是查看日志文件,刚才符合条件的有三个,如果13:59之后,三个变成0个,那么说明脚本生效

这里有一个插曲,怎么也不起作用,后来发现执行./delete_log.sh

-bash: ./log.sh: Permission denied

我以为是名称的问题,把delete_log.sh改成log.sh也不行,后来发现执行方式不对

sh ./log.sh

现在sh脚本起到效果了

执行shell时,如果出现‘line 8: syntax error near unexpected token `$'do\r''^C’ 报错,可能因为在windows下编辑的格式问题,在notepad下转化即可

参考:写shell,运行出错:syntax error near unexpected token `$’do\r” - 程序员大本营 (pianshen.com)

参考文章:

(359条消息) Linux定时启动运行程序的方法_linux定时执行命令_宗而研之的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值