当Ubuntu的容量超过80%或一个月后,有没有办法在tmp文件夹中自动删除带有拇指扩展名的文件?
我应该使用crontab吗?或者我应该同时写crontab和shellscript吗?
答案 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
条目,定期运行该脚本。