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 -e
或crontab 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 分钟的主要内容,如果未能解决你的问题,请参考以下文章