crontab语法查询

时间:2011-05-23 08:59:17

标签: syntax crontab

这个crontab语法意味着什么

"*/15 * * * 2-5"

我认为这意味着它从周二到周六每隔15分钟运行一次。 我可以改为:

"*/55 * * * 2-5"

由于某种原因似乎不起作用。

你能解释一下* /的内容吗?

由于

5 个答案:

答案 0 :(得分:6)

如果您希望每15分钟运行一次,那么您的第一个示例应该没问题。第5个职位的2-5指的是星期二到星期五。

您希望使用*/55完成什么?

Wikipedia:

中可以找到一个好的语法解释
  

星号(*)

     

星号表示cron   表达式将匹配所有值   领域的;例如,使用星号   在第4场(月)会   每月表明。

     

斜线(/)

     

斜杠用于描述   范围的增量。例如   3-59 / 15在第1场(分钟)   将指示第3分钟   小时,之后每15分钟一次。   形式“* / ...”相当于   表格“0-59 /...”。

答案 1 :(得分:2)

*/xx表示每xx时间单位。

在您的示例中,*/15表示每15分钟=> :15:30:45

*/55将每55分钟一次,它将在每小时后的55点(10:55,11:55,12:55 ......)启动剧本。

答案 2 :(得分:2)

"*/15 * * * 2-5"

*/15并不意味着它每小时过去15分钟就会运行一次...... /15是一个步骤指示器,意味着它每15分钟运行一次(即每小时4次)

从手册页:

> man 5 crontab

Steps are also permitted after an asterisk, 
so if you want to say ``every two hours'', 
just use ``*/2''.

因此,如果您想重复运行某些内容,请仅使用*/表示法。一小时多次,一天多次等等。

彼得

答案 3 :(得分:0)

与民间传说相反,* / xx并不代表每个xx时间单位。

/ pattern表示每xx时间单位,但不在范围的末尾

它只能在xx被单位整除的情况下工作(即分钟或秒,只有/ 2,/ 3,/ 4,/ 5,/ 6,/ 8和/ 12)

例如* / 5将在大多数时间每5天重复一次,除非在1天,2天或4天后重复的月份结束,具体取决于月份和工作日。

因为55如此接近60,它实际上会按照你的意图工作,但只是巧合(因为四舍五入)。如果你写了* / 25,它将每小时运行两次,分别为:25和50

答案 4 :(得分:0)

Jaime Guerroro的答案接近于RHEL 7.2上的正确行为 以下是我的发现。 用cron作为

*/55 * * * * /root/test.sh &>> /root/output.log

我得到了行为

=== Start /root/test.sh Wed May 18 19:55:01  ===
=== Start /root/test.sh Wed May 18 20:00:01  ===
=== End /root/test.sh Wed May 18 20:02:35  ===
=== End /root/test.sh Wed May 18 20:03:44  ===

来自wiki的解释,https://en.wikipedia.org/wiki/Cron

  例如,输入* / 5表示日期字段有时会执行   1天,2天或3天,取决于月份和闰年;这是因为   cron是无状态的(它不记得上次执行的时间   也不计算它和现在之间的差异,需要准确   频率计数 - 相反,cron只是模式匹配器。)