cron没有在没有特定条件的情况下在/etc/cron.d中获取crontab

时间:2017-06-15 18:05:17

标签: bash cron kubernetes

我在kubernetes的容器中运行Ubuntu 14.04.5。我正在运行cron(成功),但它没有拿起我的crontab,除非分钟字段是*或某些变化,如* / 45。有谁知道这是为什么?对此的测试一直是回应日志,到目前为止,它始终证明以这种方式工作。 /etc/cron.d/crontab文件如下所示:

# Run my command
SHELL=/bin/bash
*/47 17 * * * root echo "`date`: About to run!" >> /var/log/cron.log 2>&1
#

如果我将此更改为我认为的标准符号,则它不起作用:

# Run my command
SHELL=/bin/bash
47 17 * * * root echo "`date`: About to run!" >> /var/log/cron.log 2>&1
#

我有什么遗漏导致这种行为吗?请注意,我已指定用户,我有一个尾随的新行,并且它是正确的表示法。我也简化了只有回声,同样的结果似乎发生了。任何信息,将不胜感激。我为此感到困惑。

1 个答案:

答案 0 :(得分:0)

似乎是Ubuntu中的一个错误。假设Ubuntu保留了Debian中的相同cron(它应该,但为什么规范会这样做呢?)你应该能够使用标准格式。

查看代码,“*”表示无论可用范围是什么的“从头到尾”的范围。有一系列'if'语句试图确定条目,如果某些条件评估某种方式,它将返回EOF并拯救你。

因此,分钟部分中的* / 47表示1-59步(每个)第47分钟。这需要一个代码路径,它应该是代码路径之后应该说:“分钟47”。

因此,如果您的步骤路径(“/ 47”)正在评估常规路径未评估时,那么由于某种原因它正在跳过该代码路径。

我和Ubuntu有很多奇怪的问题(像这样)。我们几乎只在服务器上运行Debian的原因之一。