运维开发网

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

运维开发网 https://www.qedev.com 2020-05-07 12:33 出处:网络 作者:运维开发网整理
我正在玩一些日期变化的aroudn DATE = $(date) 但那也没有用 crontab -e CRONLOG=/tmp/log/crontab.log
我正在玩一些日期变化的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

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

0

精彩评论

暂无评论...
验证码 换一张
取 消