我正在玩一些日期变化的aroudn
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中创建一个日志条目,每次更新都有一个时间戳
我怎么能在CentOS 6上做到这一点?
UPDATE
DATEVAR=date +20%y%m%d_%H%M%S */1 * * * * /bin/echo [CRON] $($(DATEVAR)) >> /tmp/log/crontab.log
我尝试时只渲染[CRON]和NOTHING = /
Cron不是shell – 它不像shell那样解析命令.因此,您的变量被分配为静态文本.
我对这个问题有三种解决方案:
选项1:
使用shell脚本生成命令,包含您想要的任何变量和逻辑 – 并从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,因此日期将被处理并替换为实际日期.
* * * * * /bin/echo `date +20\%y\%m\%d_\%H\%M\%S` >> /tmp/crontab.log
选项3:在cron中设置字符串变量,并将其传递给要处理的命令(注意 – 百分号不需要转义,变量本身包含在$()中以在单独的shell中执行 – 反引号应该工作相同):
DATEVAR=date +20%y%m%d_%H%M%S * * * * * /bin/echo $($DATEVAR) >> /tmp/crontab.log
(在上面的所有情况中,您当然可以使用变量作为日志路径,而不是“硬编码”它.)