![在 Rackspace 云的 cron 环境中,有哪些可以替代“find”的方法?](https://linux22.com/image/570493/%E5%9C%A8%20Rackspace%20%E4%BA%91%E7%9A%84%20cron%20%E7%8E%AF%E5%A2%83%E4%B8%AD%EF%BC%8C%E6%9C%89%E5%93%AA%E4%BA%9B%E5%8F%AF%E4%BB%A5%E6%9B%BF%E4%BB%A3%E2%80%9Cfind%E2%80%9D%E7%9A%84%E6%96%B9%E6%B3%95%EF%BC%9F.png)
我正在编写一个 shell 脚本来将 mysql 备份作为 cron 作业运行,但遇到了问题,即 rackspace cloud sites cron 环境不支持 find 命令。任何使用 find 命令的尝试都会给出:/usr/bin/find:权限被拒绝
除了这样做,还有什么其他选择:
find *.gz -mtime +7 -delete
当文件命名如下时:
gzip > /mnt/target03/rest-of-path/web/backups/DATABASENAME_`date "+%Y-%m-%d"`.gz
?
我希望我可以解析文件的日期而不使用循环中的 find,例如:
FILES=./path/to/files/*
for f in $FILES
do
#delete files older than 7 days without using find
done
答案1
如果不存在该副本,我建议您上传自己的 find 副本。
如果不起作用,可以使用以下 Perl 脚本文件::查找模块可能会有用。
答案2
这可能是 PATH 环境问题。正如评论者提到的,您可能需要在 cron 中尝试完整路径。
尝试
whereis find
which find
locate find
看看您是否可以识别要查找的完整路径。
在 Red Hat 系统上,find 是 findutils RPM 的一部分,通常位于:
/usr/bin/find
因此,请将您的 cron 重写为:
/usr/bin/find *.gz -mtime +7 -delete