我有一个命令,可以使用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无法执行命令。任何指向调试的指针或命令中的问题是什么?
答案 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.