![脚本用于从特定用户删除 /tmp 中的所有文件](https://linux22.com/image/582344/%E8%84%9A%E6%9C%AC%E7%94%A8%E4%BA%8E%E4%BB%8E%E7%89%B9%E5%AE%9A%E7%94%A8%E6%88%B7%E5%88%A0%E9%99%A4%20%2Ftmp%20%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6.png)
我的一个服务器守护进程占用了 /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 命令检查它是否已打开。