![使用 find 的脚本在我执行时运行良好,但从 cron 中无法正确运行](https://linux22.com/image/1164124/%E4%BD%BF%E7%94%A8%20find%20%E7%9A%84%E8%84%9A%E6%9C%AC%E5%9C%A8%E6%88%91%E6%89%A7%E8%A1%8C%E6%97%B6%E8%BF%90%E8%A1%8C%E8%89%AF%E5%A5%BD%EF%BC%8C%E4%BD%86%E4%BB%8E%20cron%20%E4%B8%AD%E6%97%A0%E6%B3%95%E6%AD%A3%E7%A1%AE%E8%BF%90%E8%A1%8C.png)
谁能告诉我这个脚本有什么问题?
它无法工作cron
,但是当我正常执行它时可以正常工作。
警告:此命令很危险,可能会删除大量文件
#!/bin/bash
/bin/find . -maxdepth 1 -type d -ctime +2 -exec /bin/rm -rf {} \;
答案1
让我们看看你在这里做什么:
/bin/find . -maxdepth 1 -type d -ctime +2 -exec /bin/rm -rf {} \;
查找所有文件夹当前目录(.
)已创建超过 2 天并rm -rf
在其上执行。
cronjob 的当前工作目录是用户主目录,对于root
/ sudo
cronjobs 来说它是/root
。
如果您真的很幸运,您使用了sudo crontab
,并且它没有任何危害,因为/root
目录通常不在 Ubuntu 中使用。
如果没有,你基本上删除了家里超过 2 天的所有目录。这应该或多或少是一些重要的东西。Desktop
,,,Pictures
...Documents
.config
你应该做的是:
使用完整路径:
/bin/find /path/to/my/folder -maxdepth 1 -type d -ctime +2 -exec /bin/rm -rf {} \;
以任何方式
- 是非常小心谨慎
rm -rf
,除非您 100% 确定,否则不要使用它。 - 准备好备份。
答案2
该脚本取决于当前工作目录(.
),手动运行和 cron 执行时可能有所不同。
请使用您想要在那里处理的文件夹的绝对路径。