259

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

*/30 * * * *

我需要使用什么字符串?

cron 在 OSX 上运行。

4

6 回答 6

521

做:

0,30 * * * * your_command
于 2009-02-25T05:08:41.567 回答
151

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

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

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

于 2016-11-19T16:50:32.983 回答
78

试试这个:

0,30 * * * * your command goes here

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

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

于 2009-02-25T05:08:50.240 回答
10

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

来自调度定时作业(Apple 官方文档)

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

您可以通过简单的网络搜索找到其他信息(例如已启动的Wikipedia 页面)。

于 2009-03-08T00:35:12.583 回答
5

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

于 2009-02-25T05:26:44.083 回答
5

您可以同时使用 ' '除 ' / ' 符号。
但是,' / ' 更好。
假设“每 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,...'

所以,可分符号 '/' 始终是最佳选择;

于 2018-03-19T06:18:28.487 回答