我是第一次在crontab上和cron一起工作,我想知道是否可以在特定时间每天运行一次,比如说太平洋标准时间下午5点?
这是我尝试的但是如何基于PST时间?
process.cwd()
答案 0 :(得分:1)
crontab条目将根据您运行它的系统的系统时间运行。如果您的服务器时间设置为太平洋时间(请注意,美国目前是夏令时,而不是标准时间),那么它将在指定时间运行。如果您的服务器的时间设置为其他时间(例如UTC或东部时间等),那么您需要进行一些时区数学运算,以便在您希望它在任何时间运行时运行作业你希望它运行的区域。
另请注意,您的问题指定您希望作业在 5pm 运行,但您注意到的0 5 * * *
的crontab条目将在凌晨5点运行系统的时区。如果您希望它在 5pm 运行,则crontab条目应为0 17 * * *
。
答案 1 :(得分:0)
答案 2 :(得分:0)
引用crontab(5)
手册页(here或输入man 5 crontab
以确保您查看了系统的正确文档):
cron
守护程序以定义的时区运行。它目前没有 支持每用户时区。所有任务:系统和用户都将是 根据配置的时区运行。即使用户指定了TZ
crontab
中的crontab
环境变量只影响crontab
中执行的命令,而不是0 0 * * *
的执行 任务本身。
因此,如果系统默认配置为使用UTC,则crontab中的时间规范将使用UTC,而不是本地时间。没有直接的方法可以避免这种情况(除了通过改变系统时区,但当然会产生其他影响)。
如果您希望您的工作在当地时间下午5点(17:00)运行,您可以将其安排为相当于该时间的UTC(0 * * * *
将在午夜UTC运行,即PDT 17:00 )。但是,这不会针对夏令时转换进行调整。
或者您可以安排作业每小时运行一次(CRON_TZ
),然后让作业本身检查当地时间,如果当前时间不是您想要的,则不执行任何操作。编写一个调用命令的小包装脚本可能是执行此操作的最佳方法。不要以为你的工作会在一小时内完全运行。延迟一秒左右是常见的。对于每小时工作,检查当前时间是否与预期时间的一分钟相关可能是合理的。
(This man page提到了一个django.contrib.sessions.backends.cache
环境变量,但似乎除了大多数Linux系统使用的Vixie cron之外的某些实现。)