Linux Bash脚本不删除给定目录中的文件
我在网上找到了这个bash脚本,我想用它删除超过2天的文件:Linux Bash脚本不删除给定目录中的文件,linux,bash,cron,find,Linux,Bash,Cron,Find,我在网上找到了这个bash脚本,我想用它删除超过2天的文件: #!/bin/bash find /path/to/dir -type f -mtime +2 -exec rm {} \; 我设置了一个cronjob来运行脚本(我将其设置为提前几分钟进行测试,但它应该每24小时运行一次) 我正确退出,因此它会更新cronjob 为什么不删除目录中的文件?大多数cron作业没有设置路径。您必须完全限定find命令 #!/bin/bash /usr/bin/find /path/to/dir -t
#!/bin/bash
find /path/to/dir -type f -mtime +2 -exec rm {} \;
我设置了一个cronjob来运行脚本(我将其设置为提前几分钟进行测试,但它应该每24小时运行一次)
我正确退出,因此它会更新cronjob
为什么不删除目录中的文件?大多数cron作业没有设置路径。您必须完全限定find命令
#!/bin/bash
/usr/bin/find /path/to/dir -type f -mtime +2 -exec rm {} \;
如果按照damienfrancois的建议捕获stdout和stderr,您可能会看到消息“commandnotfound:find”。如果您没有捕获stdout和stderr,cron通常会将输出发送到cron作业所有者的电子邮件,除非配置为不这样做。如果您尝试在脚本末尾转储回显并记录输出,该怎么办
cron1.sh >> /var/log/cron1.log
你可以试试这个,但我不确定它是否有效
--exec rm -rf {}
将输出重定向到一个文件以获取可能出现的任何错误消息
54 18***/path/to/other/dir/script.sh&>/tmp/cronlog
还要注意,find
有一个-delete
选项。我自己运行了这个命令,它可以工作,所以它只是cronjob有问题!?在脚本中添加一行,例如date>/tmp/log
,以确保脚本正在运行。还要检查脚本是否可执行以及是否由正确的用户运行。参数to-exec也应该是完全限定的/bin/rm。或者,在脚本中设置路径。
--exec rm -rf {}