脚本用于从特定用户删除 /tmp 中的所有文件

脚本用于从特定用户删除 /tmp 中的所有文件

我的一个服务器守护进程占用了 /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 命令检查它是否已打开。

相关内容