首页 > 解决方案 > python 脚本的 Cron 作业比预定时间晚一小时运行

问题描述

我有一个 python 脚本,它获取某个时区的当前时间(这里:欧洲/柏林;CET),我想安排脚本在使用 crontab 的虚拟机上运行。脚本如下所示:

from datetime import datetime
import pytz 
tz = pytz.timezone("Europe/Berlin")
datetime_now = datetime.now(tz)
print(datetime_now)
date_of_today = datetime_now.strftime("%d-%m-%Y_%H-%M-%S")
print(date_of_today)

我已将机器的系统时间设置为同一时区。当我通过控制台运行文件时,python script.py它会打印正确的时间:

2021-03-24 14:48:14.746922+01:00
24-03-2021_14-48-14

当我想像这样在 cron 中安排作业时

50 14 * * * . ~/venv/bin/activate; PATH=$PATH:/usr/local/bin; python ~/folder/subfolder/script.py >> ~/folder/subfolder/cronlog.log 2>&1

作业未运行。似乎 cron 不使用系统时间(CET)而是UTC。它在一小时后运行作业。我已经检查了以下内容:

cat /etc/timezone
date
sudo hwclock --show
timedatectl

,输出:

Europe/Berlin

Wed Mar 24 14:48:24 CET 2021

2021-03-24 14:48:31.257344+01:00
               Local time: Wed 2021-03-24 14:48:35 CET
           Universal time: Wed 2021-03-24 13:48:35 UTC
                 RTC time: Wed 2021-03-24 13:48:36
                Time zone: Europe/Berlin (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

我如何告诉 cron 使用预期的时间?

标签: pythoncronvirtual-machine

解决方案


推荐阅读