如何在 Cron 选项卡中使用 TimeZone

如何在 Cron 选项卡中使用 TimeZone

我在特定日期运行一项作业 [客户时间而非本地时间] 来向我的客户发送电子邮件。我使用 cpanel cron 作业,我尝试使用带时区的 cron 作业

但它仍然发送我当地的时区

32 16 08 05 *  /usr/bin/curl CRON_TZ=Africa/Algiers https://www.example.com/SendCron.php?CronID=382 #CronID382END # z93v66 

我使用 Cron_TZ 做错了什么?

答案1

你的CRON_TZ=在你的位置错了crontab文件,作为option 属性为了/usr/bin/curl

你应该把它当作环境变量设定在cron 条目

CRON_TZ=Africa/Algiers 

32 16 08 05 *  /usr/bin/curl https://www.example.com/SendCron.php?CronID=382

如果你需要在同一行上为单个 cron 条目设置时区,则无法使用CRON_TZ环境变量,但你需要调用外部env(在修改后的环境中运行程序)来改变TZ

32 16 08 05 * /usr/bin/env TZ=Africa/Algiers /usr/bin/curl https://www.example.com/Send...

请注意,两者都会改变时区用于命令,不用于 cron 守护进程。cron 守护进程只检查字段是否与当前时间匹配,而不管变量是什么CRON_TZsystemd-croncrontab解释这一限制:

systemd-cron 单元以定义的时区运行。它目前不支持每个用户的时区。所有任务:系统任务和用户任务都将基于配置的时区运行。即使用户在其 crontab 中指定 TZ 环境变量,这也只会影响 crontab 中执行的命令,而不会影响 crontab 任务本身的执行。

如果需要根据时区运行计划,则必须更改服务器时区,例如:

ln -sf /usr/share/zoneinfo/Africa/Algiers /etc/localtime

相关内容