Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash脚本不删除给定目录中的文件_Linux_Bash_Cron_Find - Fatal编程技术网

Linux Bash脚本不删除给定目录中的文件

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

我在网上找到了这个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 -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 {}