我正在玩一些date的变化
DATE = $(date)
但那也没用
crontab -e
CRONLOG=/tmp/log/crontab.log DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S` * * * * * echo $DATEVAR >> /tmp/log/crontab.log */2 * * * * echo "$DATEVAR hello" >> ${CRONLOG} */1 * * * * echo 'every minute' >> ${CRONLOG}
这只是输出的文字是…
我想在每个更新上用时间戳在crontab.log中创build一个日志条目
我如何在CentOS 6上执行此操作?
UPDATE
DATEVAR=date +20%y%m%d_%H%M%S */1 * * * * /bin/echo [CRON] $($(DATEVAR)) >> /tmp/log/crontab.log
只有[CRON]和没有任何时候我试过= /
Cron不是一个shell – 它不像shell那样parsing命令。 因此,您的variables被指定为静态文本。
我知道这个问题有三种解决scheme:
选项1:使用shell脚本来生成你的命令,包含你想要的任何variables和逻辑,然后从cron调用这个shell脚本。
* * * * * /path/to/myscript.sh
myscript.sh:
DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S` echo $DATEVAR >> /tmp/crontab.log
选项2:直接在命令中包含date命令,并且由于整个命令被传递给shell,date将被处理并被实际的date取代。
* * * * * /bin/echo `date +20\%y\%m\%d_\%H\%M\%S` >> /tmp/crontab.log
选项3:在cron中设置stringvariables,并将其传递给要处理的命令(注意 – 百分号不需要转义,而variables本身被包装在$()中以在单独的shell中执行 – 反引号应该是一样的):
DATEVAR=date +20%y%m%d_%H%M%S * * * * * /bin/echo $($DATEVAR) >> /tmp/crontab.log
(在上述所有情况下,当然,您可以使用variables作为日志path,而不是“硬编码”)。