我的 apache 服务器上有一个存储目录,我需要每 6 小时删除一次其中的所有文件和文件夹。
为了实现这一点,我在 crontab 文件中添加了下一行:
* */6 * * * root find ~/project/storage -type f -mmin +720 -delete
我手动运行了命令-它有效。
Cron 也有效,我在日志中得到下一行:
CRON[31641]: (root) CMD (find ~/project/storage -type f -mmin +720 -delete)
但实际上,它并没有删除文件,我不明白为什么。
答案1
你期望中的“~”~/project/storage
做什么?有一件事我可以向你保证,那就是它不会扩展为/home/$USER/。
解决方案:使用任何 cron 时始终使用明确的(/绝对)路径。
关于您的方法,我有一个提示:我永远不会这样做。如果我是您,我会先创建一个带有时间戳的压缩 tar 文件,然后删除这些文件并将压缩的 tar 文件存储在不同的目录中,并在宽限期(例如一周或一个月甚至一年后)后删除这些 tar 文件。我无法告诉您在过去 25 年里这种方法救了我多少次。甚至是为了解决客户询问他们采取某些行动后发生了什么的问题。