Crontab 格式化 - 每 15 分钟

Posted

技术标签:

【中文标题】Crontab 格式化 - 每 15 分钟【英文标题】:Crontab Formatting - every 15 minutes 【发布时间】:2013-02-08 14:57:52 【问题描述】:

我正在尝试让一个简单的 crontab 作业每 15 分钟运行一次,但在决定如何格式化计时时遇到了麻烦。

我一直在记录以下内容:

15 * * * * ------------------------

我很确定这只是每小时的前 15 分钟。

我认为 crontab 允许用户指定确切的运行时间,即:

0, 15,30,45 * * * * -------------------------

但如果我想从启动 crontab 的那一刻起每 15 分钟运行一次(可能不一定是可被 15 整除的值),我将如何进行格式化/这可能吗?

【问题讨论】:

什么是“你开始的那一刻”?当你完成crontab -e?系统何时启动? 【参考方案1】:

Crontab 不记得您“开始”的时间(大概是您执行crontab -ecrontab filename 命令的时间)。

如果您想从任意时间开始每 15 分钟运行一次作业,则必须指定该时间。这个:

7-59/15 * * * * command

将在每小时后的 7、22、37 和 52 分钟运行。假设您正在运行 Vixie cron,这是最常见的实现。为了更好的便携性,您可以使用:

7,22,37,52 * * * * command

请记住,前 5 个字段中的任何一个都不能有空格; 0, 15,30,45,正如你在你的问题中所说的那样,是无效的。

【讨论】:

为了清楚起见 - crond 每分钟运行一次。那是为您运行 crontab 项目的守护进程。如果您不使用 crontab 来编辑 crontab 文件,crond 将看不到更改。如果使用 crontab,“now”是保存文件后第一次执行 crond。 @jimmcnamara:如果您使用crontab 以外的其他东西来编辑 crontab 文件——好吧,不要那样做。直接编辑文件需要 (a) 知道它在哪里,以及 (b) 使用 root 访问权限。除非确实有必要并且您知道自己在做什么,否则不要对 任何事情 使用 root 访问权限。 7/15 因为分钟在 Ubuntu 16.04.2 LTS 上不受支持。 */15 工作 你是对的。我已经更新了规范,我现在正在测试它(当然需要一段时间才能产生结果)。 我知道问题出在哪里,像/15 这样的步长值必须与一个范围相关联,而不仅仅是一个值。这就是为什么7/15 无效,但7-59/15 可以。 (我的测试在整点后 22 分钟触发,这是我的预期;我会让它运行一段时间。)【参考方案2】:

您可以像这样格式化 crontab,让它每 15 分钟运行一次。

*/15 * * * * [path/to/script]

【讨论】:

最常见的crontab 实现确实支持该语法。如果您需要最大的便携性,请将*/15 更改为0,15,30,45【参考方案3】:

0,15,30,45 15 分钟不正确。

更好更简单的方法是*/15 * * * * 15 分钟。

5 minutes
*/5 * * * *

15 minutes
*/15 * * * *

30 minutes
*/30 * * * *

60 minutes
0 * * * *

1 day
0 0 * * *

【讨论】:

最好说明为什么 0,15,30,45 不正确。

以上是关于Crontab 格式化 - 每 15 分钟的主要内容,如果未能解决你的问题,请参考以下文章

Crontab使用格式说明

Crontab 每 15 分钟运行一次,除了凌晨 3 点?

crontab在特定时间之间每15分钟运行一次

linux crontab语法

Linux crontab 命令格式与详细例子

Linux crontab 命令格式与详细例子