centos – 如何在crontab输出的日志中设置DATE变量?

我正在玩一些日期变化的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

(在上面的所有情况中,您当然可以使用变量作为日志路径,而不是“硬编码”它.)

相关文章

Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native