sudo crontab中的时区时间

时间:2015-03-19 22:06:18

标签: bash cron

我使用sudo crontab -e执行了以下cron任务:

0 * * * * /usr/local/bin/docker_build/backup.sh

Cron效果很好(每小时启动备份)。 在这个bash脚本中,我根据这种模式编写了一个备份sql文件:

DATE_NOW=$(date +%Y-%d-%m-%H-%M)
$DATE_NOW.sql

但%H变量的小时返回不是我当前时区的小时。

我在shell中检查以下命令:

date //return good date

cat /etc/timezone //return good timezone

更新:

这是一个非常愚蠢的错误。简而言之,我的bash脚本在docker容器中运行。容器时区未设置为我当前的时区。我的图像构建中有以下内容:

RUN echo America/Montreal > /etc/timezone && \
dpkg-reconfigure --frontend noninteractive tzdata

1 个答案:

答案 0 :(得分:1)

您可以在crontab条目中指定时区

0 * * * * env TZ='Europe/Madrid' /usr/local/bin/docker_build/backup.sh

或者,我想,在crontab本身

TZ='Europe/Madrid'
0 * * * * /usr/local/bin/docker_build/backup.sh

您可以找到root的cron环境中的时区

* * * * * date "+\%F \%T \%Z \%z" > /tmp/root.cron.date.txt