有没有办法自动删除tmp文件夹中的文件?

时间:2017-09-01 09:09:41

标签: shell ubuntu cron

当Ubuntu的容量超过80%或一个月后,有没有办法在tmp文件夹中自动删除带有拇指扩展名的文件?

我应该使用crontab吗?或者我应该同时写crontab和shellscript吗?

1 个答案:

答案 0 :(得分:1)

在我看来,您可以使用基于年龄删除文件的标准方法,稍微修改一下,以便在文件系统过满时降低阈值。

在一定年龄(约一个月)内删除*.thumb中所有/tmp个文件的常规方法是使用如下命令:

find /tmp -type f -name '*.thumb' -mtime +30 -delete

因此,您需要做的就是降低阈值是在某些情况下修改mtime测试。要根据文件系统的完整程度来完成此操作,可以使用以下内容:

#!/usr/bin/env bash

# Default to about a month.

thresh=30

# Get percentage used of /tmp, needs to match output of df, such as:
#  Filesystem     1K-blocks      Used Available Use% Mounted on
#  tmp              1000000    280000    720000  28% /tmp

tmppct=$(df | awk '$6=="/tmp" { gsub("%", "", $5); print $5 }')

# Reduce threshold if tmp more than 80% full.

[[ ${tmppct} -gt 80 ]] && thresh=1

# Go and clean up, based on threshold.

find /tmp -type f -name '*.thumb' -mtime +${thresh} -delete

该脚本唯一可能棘手的一点是通过以下方式传递df的输出(基于指定的格式):

awk '$6=="/tmp" { gsub("%", "", $5); print $5 }'

这只是:

  • 查找第六个字段为/tmp;
  • 的行
  • 从第五个字段中删除尾随%;和
  • 最后输出(修改的)第五个字段以捕获百分比已满。

然后只需创建一个crontab条目,定期运行该脚本。