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

我的一个服务器守护进程在/ tmp中使用了很多空间。 因为我不想在服务器磁盘空间不足的时候重启我的机器,所以我需要运行一个CRON脚本来删除旧的临时文件。

用什么方法recursion地删除/ tmp下超过1个小时的用户的所有文件和目录,说www-data ? 当然,它不应该解决符号链接,并开始删除系统上其他地方的文件。 我正在使用Ubuntu 12.04,并将以root身份运行此cronjob。

把这样的脚本放到/etc/cron.hourly中:

 find /tmp -mmin +60 -user www-data -delete 

您可能需要先手动运行没有-delete选项的find来检查您的工作。

嗯,同样,杀死子目录(因为 – 删除只能删除文件),添加另一行:

 find /tmp -mmin +60 -user www-data -type d -empty -exec rmdir {} \; 

根据子目录深度的不同,第二个find可能需要一点时间才能恢复,因为父目录的mtime将在子目录被删除时更新。

如果在删除临时文件之前打开临时文件,也可以使用lsof命令进行检查。