在crontab中将cron设置为在太平洋标准时间上午5点运行

在crontab中将cron设置为在太平洋标准时间上午5点运行,cron,crontab,Cron,Crontab,我第一次在crontab中使用cron,我想知道是否有可能在特定时间每天运行一次,比如太平洋标准时间下午5点 这是我已经尝试过的,但是我如何根据PST时间来确定呢 0 5 * * * command crontab条目将根据运行它的系统的系统时间运行。如果服务器的时间设置为太平洋时间(请注意,美国目前使用的是夏令时,而不是标准时间),则它将在指定的时间运行。如果服务器的时间设置为其他时间(如UTC、东部时间或其他时间),则需要进行时区计算,以便作业在您希望它在哪个时区运行的时间运行 另外,请注

我第一次在crontab中使用cron,我想知道是否有可能在特定时间每天运行一次,比如太平洋标准时间下午5点

这是我已经尝试过的,但是我如何根据PST时间来确定呢

0 5 * * * command

crontab条目将根据运行它的系统的系统时间运行。如果服务器的时间设置为太平洋时间(请注意,美国目前使用的是夏令时,而不是标准时间),则它将在指定的时间运行。如果服务器的时间设置为其他时间(如UTC、东部时间或其他时间),则需要进行时区计算,以便作业在您希望它在哪个时区运行的时间运行


另外,请注意,您的问题指定您希望作业在5pm运行,但您注意到的
0.5***
的crontab条目将在系统时区的5am运行。如果希望它在下午5点运行,crontab条目应该是
0 17***
cron使用24小时时间,在美国也称为军事时间。其中0***是午夜,0 12***是下午12点。如果您的服务器位于另一个时区(例如(+2),则始终可以调整代码,以补偿您希望应用程序运行的位置。

引用
crontab(5)
手册页(或键入
man 5 crontab
以确保您看到的是系统的正确文档):

cron
守护进程以定义的时区运行。目前没有 支持每用户时区。所有任务:系统的和用户的将 根据配置的时区运行。即使用户指定了
TZ
his
crontab
中的环境变量这将只影响 在
crontab
中执行的命令,而不是执行
crontab
任务本身

因此,如果系统默认配置为使用UTC,crontab中的时间规范将使用UTC,而不是本地时间。没有直接的方法可以避免这种情况(除了改变系统时区之外,当然这会产生其他影响)


如果您希望作业在当地时间下午5点(17:00)运行,您可以将其安排为该时间的UTC等效时间(
0***
将在UTC午夜运行,即太平洋夏令时17:00)。但这并不适用于夏令时转换

或者,您可以安排作业每小时运行一次(
0****
),然后让作业本身检查本地时间,如果当前时间不是您想要的时间,则不执行任何操作。编写一个调用您的命令的小包装器脚本可能是最好的方法。不要以为你的工作会准时完成。一秒钟左右的延迟是常见的。对于小时工,检查当前时间是否比预期时间短一分钟可能是合理的

(提到了一个
CRON_TZ
环境变量,但它似乎适用于大多数Linux系统使用的Vixie CRON以外的一些实现。)

使用以下命令:

H5***


这会将cron设置为在太平洋标准时间上午5点在crontab中运行作业。

谢谢您的回复。假设服务器时区是UTC,那么我如何在晚上12点运行某个程序?PDT比UTC晚7小时。所以,当它是协调世界时上午7:00时,则是太平洋标准时间上午12:00(或午夜)。如果服务器的时区设置为UTC,那么您基本上希望crontab条目在上午7点运行。因此,
0 7***
条目将在午夜PDT运行脚本。请注意,由于UTC不随白天/标准时间而变化,当PDT切换到PST时,如果不从上面更改crontab条目,脚本将在PST晚上11点运行(我99%确定这是对的。我讨厌时区数学。如果我错了,那就是凌晨1点。)好的,如果我在使用UTC的服务器上输入0***,那么它将在晚上12点运行?(PST/PDT不再重要)@user4803090:如果服务器使用UTC,
0***
将在UTC午夜(太平洋标准时间下午5点,太平洋标准时间下午4点)运行。
0***
将在午夜运行cron作业,而运行它的服务器认为是午夜。