Shell命令删除不在crontab中工作的文件

时间:2018-05-14 23:07:27

标签: bash shell ubuntu cron

我有一个命令,可以使用crontab定期删除旧文件。

命令是:

0 * * * * sudo find /path/to/data/ -type f -mmin +600 -name '*.gz' -execdir rm -- '{}' +;

这有助于我从指定的文件夹位置删除超过600分钟(10小时)的所有.gz个文件。它在命令提示符和crontab中完美运行。

现在我修改了上面的命令来删除另一组文件。但是它在命令提示符下工作,但在crontab中不起作用。

0 * * * * sudo find /path/to/data/ -type f -mmin +600 -name '*.gz%%' -execdir rm -- '{}' +;

我的文件扩展名为*.gz%%。文件名已附加%%,如果需要,可以更改为其他字符。

如果从命令提示符运行,命令运行完全正常,但在crontab中保留的根本不执行。

似乎crontab无法执行命令。任何指向调试的指针或命令中的问题是什么?

1 个答案:

答案 0 :(得分:1)

来自crontab(5)手册页:

   The  "sixth"  field  (the rest of the line) specifies the command to be
   run.  The entire command portion of the line, up to a newline or a  "%"
   character, will be executed by /bin/sh or by the shell specified in the
   SHELL variable of the cronfile.  A "%" character in the command, unless
   escaped  with a backslash (\), will be changed into newline characters,
   and all data after the first % will be sent to the command as  standard
   input.