我使用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
答案 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