linux监控文件超过限制大小自动删除脚本

当被监控的文件超过1GB自动删除,并新增日志到 /var/log/root_cron.log下。

# 设置监控文件
monitor_file=/var/spool/mail/root
# 获取文件大小,单位为字节
file_size=$(du -b $monitor_file | awk '{print $1}')
# 判断文件大小是否超过1G
if [ $file_size -gt $((1024*1024*1024)) ]; then
  echo "$(date "+%Y-%m-%d %H:%M:%S") - deleting $monitor_file" >> /var/log/root_cron.log
  rm $monitor_file
fi
exit 0
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用Linux中的crontab命令来编写自动删除文件脚本。具体步骤如下: 1. 打开终端,输入命令 crontab -e 进入编辑模式。 2. 在编辑模式下,输入以下命令: * * * find /path/to/files -type f -mtime +7 -exec rm {} \; 其中,/path/to/files是要删除文件所在的路径,-mtime +7表示删除7天前的文件,-exec rm {} \;表示执行删除操作。 3. 保存并退出编辑模式。 4. 等待一段时间后,系统会自动执行该脚本删除指定路径下7天前的文件。 ### 回答2: 要让Linux系统自动删除一些文件或目录,可以编写脚本来实现。以下是一个示例脚本: ``` #!/bin/bash # 定义要删除文件或目录的路径 path=/path/to/files # 定义要删除文件或目录的类型 file_type=.log # 定义要保留的文件或目录的天数 keep_days=7 # 切换到要删除文件或目录所在的父目录 cd $(dirname $path) # 删除过期的文件或目录 find $(basename $path) -type f -name "*$file_type" -mtime +$keep_days -exec rm {} \; find $(basename $path) -type d -empty -mtime +$keep_days -delete ``` 解释一下这个脚本的内容: 第1行注明了脚本使用的解释器是bash。这个脚本可以放在任何一个有执行权限的地方,比如你的主目录下,也可以放在系统cron的任务中,实现定时删除。 第4行定义了要删除文件或目录的路径,将其替换为实际需要删除文件或目录的路径。 第7行定义了要删除文件或目录的类型。例如,如果你想要删除所有的日志文件,可以将其设为`.log`。 第10行定义了要保留的文件或目录的天数。例如,如果你设置为7,则会保留最近7天的文件或目录,其余的都会被删除。 第13行通过`cd`命令切换到要删除的目录所在的父目录。这里使用了`dirname`,可以获取到文件路径的父目录。 接下来的两行使用`find`命令查找要删除文件或目录。第14行使用了`-type f`参数来查找文件,`-name`参数用来指定要删除文件类型,`-mtime`参数用来限定文件最后修改时间的范围。第15行使用`-type d -empty`参数来查找空目录。 最后一行使用`rm`命令来删除过期的文件,`-exec`参数用来执行一条命令,`{}`表示匹配到的文件名。第二条命令的参数`-delete`用来删除过期的空目录。 这个脚本可以根据需要进行调整。注意,在运行脚本之前,应该先测试其能否正常工作。一旦文件删除就无法恢复,谨慎操作。 ### 回答3: Linux自动删除文件脚本的作用是当指定目录下的文件符合一定条件时,自动删除这些文件。下面介绍一种基于Shell脚本的实现方法。 首先,我们需要创建一个Shell脚本文件,比如命名为“autoremove.sh”。在该脚本文件中,我们需要指定要删除文件的目录,以及删除的条件。 在该脚本文件中,可以使用find命令来查找符合条件的文件,再使用rm命令来删除这些文件。下面是一个示例脚本: #!/bin/bash # 指定要删除的目录 dir=/path/to/directory/ # 指定要删除文件类型 file_type=.log # 指定要删除的时间范围(例如3天前的文件) time_range=+3 # 查找符合条件的文件,并删除 find ${dir} -type f -name "*${file_type}" -mtime ${time_range} -exec rm -f {} \; 在上述示例中,我们使用find命令来查找目录“/path/to/directory/”下所有名称以“.log”结尾的文件,并且这些文件的最后修改时间在3天前或更早。找到符合条件的文件后,使用exec选项来执行rm命令删除文件。 我们可以使用Linux系统自带的定时任务工具crontab来定时执行该脚本文件。这里以每天凌晨3点自动删除过期的日志文件为例,创建一个定时任务: # 编辑定时任务配置文件 $ crontab -e # 在文件中添加以下配置 0 3 * * * /path/to/autoremove.sh 以上配置表示每天凌晨3点执行一次“/path/to/autoremove.sh”脚本文件。 当该脚本文件被定时执行时,符合条件的过期文件将被自动删除,以释放磁盘空间。这种方法能够有效地避免手动操作导致的错误,提高系统的安全性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值