我必须在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任务运行良好。
答案 0 :(得分:2)
%
是crontabs中的特殊字符(它表示换行符)。尝试转义它:\%
。
来自man 5 crontab
:
该行的整个命令部分,直到换行符或%字符,将由/ bin / sh或SHELL中指定的shell执行 crontab文件的变量。除非使用反斜杠(\)进行转义,否则命令中的百分号(%)将更改为换行符,并且第一个%之后的所有数据将作为标准发送到命令 输入
答案 1 :(得分:0)
第一步是检查日志,通常是/var/log/syslog
(ubuntu,debian)或类似日志。
有几个可能的原因,最常见的是缺少PATH。你能尝试添加不同命令的完整路径吗?例如:/usr/bin/find
而不是find