我的一个服务器守护进程占用了 /tmp 中的大量空间。因为我不想在服务器磁盘空间不足时重新启动计算机,所以我需要运行一个 CRON 脚本来删除旧的临时文件。
有什么好方法可以递归删除 /tmp 下所有来自用户超过 1 小时的文件和目录www-data
?当然,它不应该解析符号链接并开始删除系统上其他位置的文件。我正在使用 Ubuntu 12.04,并将以 root 身份运行此 cronjob。
答案1
将如下脚本放入 /etc/cron.hourly:
find /tmp -mmin +60 -user www-data -delete
您可能希望先手动运行find
不带-delete
选项的程序来检查您的工作。
嗯,另外,要删除子目录(因为-delete
只删除文件),请添加另一行:
find /tmp -mmin +60 -user www-data -type d -empty -exec rmdir {} \;
根据子目录的深度,第二个find
可能需要一点时间才能恢复,因为在子目录被删除时,父目录的 mtime 将会更新。
答案2
在删除临时文件之前,您还可以使用 lsof 命令检查它是否已打开。