2

我必须在 crontab 中执行这样的命令:

*/1 * * * * find /etc -type f \( ! -perm /o=w \) -exec sh -c "/bin/ls -hastl '{}' | tr '\n' ' '" \; -exec sh -c "/usr/bin/md5sum '{}' | cut -d ' ' -f 1 " \; > /tmp/crontable/daily/log/$(hostname)_$(date +"%F").log

但它什么也没做,cron 不执行此命令,但在普通 shell 中它运行良好,我在 cron 中做错了什么?其他 cron 任务运行良好。

4

2 回答 2

3

%是 crontabs 中的一个特殊字符(它表示换行符)。尝试逃避它:\%.

来自man 5 crontab

该行的整个命令部分,直到换行符或 % 字符,将由 /bin/sh 或 crontab 文件的 SHELL 变量中指定的 shell 执行。命令中的百分号 (%),除非用反斜杠 (\) 转义,否则将更改为换行符,第一个 % 之后的所有数据将作为标准输入发送到命令。

于 2013-08-01T20:27:22.893 回答
0

第一步是检查日志,通常是/var/log/syslog(ubuntu、debian)或类似的。

这有几个可能的原因,最常见的原因是缺少 PATH。您可以尝试将完整路径添加到不同的命令吗?例如:/usr/bin/find代替find

于 2013-08-01T20:21:37.423 回答