![Cron 运行命令但没有效果。如何解决?](https://linux22.com/image/1170467/Cron%20%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4%E4%BD%86%E6%B2%A1%E6%9C%89%E6%95%88%E6%9E%9C%E3%80%82%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%EF%BC%9F.png)
我的 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 年里这种方法救了我多少次。甚至是为了解决客户询问他们采取某些行动后发生了什么的问题。