ChatGPT解决这个技术问题 Extra ChatGPT

我如何让 cron 作业每 30 分钟运行一次?

我希望添加一个 crontab 条目以每 30 分钟、整点和整点后 30 分钟或接近的时间执行一次脚本。我有以下内容,但它似乎没有在 0 上运行。

*/30 * * * *

我需要使用什么字符串?

cron 在 OSX 上运行。

你成功地让你的 crontab 工作了吗?你的问题可能不是 crontab,而是让它被使用。
它正在运行另外两个脚本,每分钟一个。
我正在等待查看以下答案之一是否有效,只需要等到接下来的 30 分钟结束......在 3 分钟内。
...您不能将 0,30 更改为 0,5 吗?如果 0,5 有效,为什么 0,30 无效?
你从来没有告诉我们它是否在小时内有效!

T
Tim Cooper

做:

0,30 * * * * your_command

效果很好!在 CentOS crontab 中,我必须执行类似 0,30 * * * * root your_command 的操作,其中 root 将是我正在使用的用户。
@prograhammer - 此行是 root 的 crontab 还是其他用户的 crontab 的一部分?
@MuhamedHuseinbašić 好问题,因为有 2 个不同的 crontab(全局的,然后是用户的)。我得检查一下...
a
aequalsb

crontab 不理解“intervals”,它只理解“schedule”

有效时间:0-23 -- 有效分钟:0-59

示例 #1

30 * * * * your_command

这意味着“在每小时的分钟为 30 时运行”(将在:1:30、2:30、3:30 等运行)

示例 #2

*/30 * * * * your_command

这意味着“当每小时的分钟可以被 30 整除时运行”(运行时间:1:30、2:00、2:30、3:00 等)

例子#3

0,30 * * * * your_command

这意味着“在每小时的分钟为 0 或 30 时运行”(将在:1:30、2:00、2:30、3:00 等运行)

这是完成与示例 #2 相同结果的另一种方法

例子#4

19 * * * * your_command

这意味着“在每小时的分钟为 19 时运行”(将在:1:19、2:19、3:19 等运行)

示例 #5

*/19 * * * * your_command

https://i.stack.imgur.com/09Nfp.png

注意:包括作者在内的各种用户对这篇文章进行了一些改进


可以被 19 整除。所以 */19 也应该在 1:00、2:00 等运行。
这听起来有点合乎逻辑......我正在设置一个 cronjob 来测试
@user34814 你是对的,我的答案已被编辑......谢谢!
E
Eddie

尝试这个:

0,30 * * * * your command goes here

根据官方 Mac OS X crontab(5) manpage,支持 / 语法。因此,要弄清楚为什么它不适合您,您需要查看 cron 的日志。在这些日志中,您应该找到明确的失败消息。

注意:Mac OS X 似乎使用 Vixie Cron,与 Linux 和 BSD 相同。


我一直使用 */30 成功,但我不记得我的应用程序如果它每小时只运行一次就太关键了,所以我认为我从来没有检查过。
@Adam Hawes:我过去也成功地使用过 */xx,但在 Linux 和其他 UNIX 上。我没有亲自尝试过 Mac OSX。最初的问题没有说是哪个操作系统。一些较旧的 UNIX 不支持 */xx
您的回答也有效,但弗拉德的代表较少,所以我给了他积分。
@DarrylHein 大声笑,今天埃迪的代表次数减少了:-p。我赞成埃迪。
P
PCheese

如果您的 cron 作业仅在 Mac OS X 上运行,您可能需要使用 launchd。

Scheduling Timed Jobs (official Apple docs)

注意:虽然它仍然受支持,但 cron 不是推荐的解决方案。它已被弃用,取而代之的是 launchd。

您可以通过简单的网络搜索找到其他信息(例如 launchd Wikipedia page)。


M
Mohsen Abasi

您可以同时使用 ',' 或分隔 '/' 符号。但是,'/' 更好。假设“每 5 分钟”的情况。如果你使用',',你必须编写如下的cron作业:

0,5,10,15,20,25,30,35,....    *      *     *   * your_command

这意味着在所有定义的分钟内每小时运行 your_command:0,5,10,... 但是,如果使用“/”,则可以编写以下简单而简短的作业:

*/5  *  *  *  *  your_command

这意味着在可被 5 整除的分钟内运行 your_command 或用更简单的词 '0,5,10,...' 所以,可分符号 '/' 始终是最佳选择;


A
Allyn

您提到您使用的是 OS X-我过去使用过 cronnix。它不像自己编辑那样令人讨厌,但它帮助我了解了这些列的内容。只是一个想法。


否则,这也可能会有所帮助。