从某个用户删除 /tmp 中所有文件的脚本

Jer*_*oen 3 linux ubuntu bash cron

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

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

cjc*_*cjc 7

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

find /tmp -mmin +60 -user www-data -delete
Run Code Online (Sandbox Code Playgroud)

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

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

find /tmp -mmin +60 -user www-data -type d -empty -exec rmdir {} \;
Run Code Online (Sandbox Code Playgroud)

根据子目录的深度,第二个find可能需要一点时间来备份,因为父目录的 mtime 将随着子目录的删除而更新。