无法找出我的crontab有什么问题

由于我的一个脚本中的一些错误,我被迫每30分钟删除一次临时文件,直到我找出并debugging它。

为了做到这一点,我写了一个小的bash脚本,我每30分钟运行一次(tempCleaner)

#!/bin/bash numberOfFiles=$(find -name php* | wc -l) echo "$numberOfFiles" if (("$numberOfFiles" <= "0")) then echo "Nothing to delete" echo "There's nothing to delete, everything is fine $(date)" >> /tmp/scan_log else echo "Something to delete" echo "Oops, there are some files that needs to be deleted $(date)" >> /tmp/scan_log sudo rm -vrf php* >> /tmp/deleted_files_log fi 

我已经testing了它(./tempCleaner),现在它运行得很好,现在每30分钟运行一次,我使用cron(sudo crontab -e),并写下如下:(我意识到时间,这只是快速testing)

 * * * * * nice -19 /tmp/tempCleaner >> /tmp/error_log_cron 

不pipe我尝试过什么,它都不适合我。 为什么? 我究竟做错了什么 ? 我错过了什么?

一些技术信息,服务器负载经常超过1.0(不知道是否对cron有影响)文件位于/ tmp中,我想删除的文件与下面的组相关www-data:www-data bash文件(tempCleaner)设置为+ x,与ubuntu:ubuntu相关

该脚本在你启动它的目录中工作,这在cron环境中几乎肯定是其他的东西。 在执行其他任何操作之前,添加一个语句到cd到所讨论的目录。

编辑:

添加cd /tmp应该可以工作。 还有一些可能是引用-name选项:

 #!/bin/bash cd /tmp echo $(date) >> /tmp/deleted_files find -name 'php*' -type f | xargs rm -rvf >> /tmp/deleted_files 

而另一个编辑:这可能是nice不在你的cron环境的path。 直接调用脚本(无论如何debugging,这是有道理的),或者将完整path添加到nice中。

你应该把整个path放在命令之前,比如find和rm。

在/ usr / bin中/查找

/斌/ RM

就我而言…

缺口

PS如果你正在做一个脚本内的sudo,如果它提示你input密码会发生什么?

Sudo将脚本添加到crontab应该将cron放入根目录,而且rm之前的sudo应该是不必要的。

什么@svenW说是正确的..但在你发现你应该添加像-mmin +10这样的东西,以确保你没有删除正在使用的文件,将导致您的请求喜欢500或用户的东西。