如何在安装新的 crontab 时修复“Bad minute”错误

use*_*658 7 cron

我安装了一个全新的 Ubuntu 16.04 来替换我的 Windows 操作系统。

我正在尝试设置 cronjobs 以通过 Ampps softaculous 运行 mangento 2.1。该软件已成功安装(ampps 和 magento)并且运行良好。我正在尝试设置一个 crontab,但似乎第一行第 25 行有错误。

这是我尝试使用命令添加到 Ampps 用户的 crontab 中的内容 sudo crontab -e -u ampps

* * * * * /usr/local/ampps/php-5.6/etc
/usr/local/ampps/www/localshop.dev/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /usr/local/ampps/www/localshop.dev/var/log/magento.cron.log
* * * * * /usr/local/ampps/php-5.6/etc
/usr/local/ampps/www/localshop.dev/update/cron.php >> /usr/local/ampps/www/localshop.dev.dev/var/log/update.cron.log
* * * * * /usr/local/ampps/php-5.6/etc
/usr/local/ampps/www/localshop.dev.dev/bin/magento setup:cron:run >> /usr/local/ampps/www/localshop.dev.dev/var/log/setup.cron.log
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我在 magento 2.1 admin 中遵循了一条错误消息,其中提到了 2.0 版的故障排除链接此配置指南

ter*_*don 11

每个 crontab 行必须以应该运行命令的时间开始,然后是命令。一般格式为:

Min Hour Day Month DayOfWeek Command
Run Code Online (Sandbox Code Playgroud)

因此,要command在每个星期日的 10:15运行,您应该:

15 10 * * 0 command
Run Code Online (Sandbox Code Playgroud)

我不确定您的命令是什么,但是您的行不以时间定义开头。我不明白这样的行是什么:

* * * * * /usr/local/ampps/php-5.6/etc
Run Code Online (Sandbox Code Playgroud)

那是一个时间,但没有命令。你给它一个目录。像这样的行有命令但没有时间:

/usr/local/ampps/www/localshop.dev/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /usr/local/ampps/www/localshop.dev/var/log/magento.cron.log
Run Code Online (Sandbox Code Playgroud)

因此,请确保遵循格式,您应该没问题。如果这不清楚,请编辑您的问题并解释您尝试运行的命令。


rob*_*onm 6

根据我之前的经验,这是由于第一个 cron 行之前有一个 CR/LF 字符(因为它是从 Windows 直接编辑的,而不是直接从 Linux 编辑的)。我注意到并从十六进制编辑器中删除了该字符。

  • 您应该用更多细节来扩展您的答案。 (3认同)

小智 5

如果您尝试将 cron 变量重置为空值,也可能会发生这种错误,如下所示:

MAILTO=me@example.com
* * * * * do some stuff with error reporting
MAILTO=
* * * * * do another stuff too verbose to receive emails
Run Code Online (Sandbox Code Playgroud)

请注意第 3 行后面的空行。MAILTO=这将导致出现以下消息:

crontab: installing new crontab
"/tmp/crontab.AvDwzo":3: bad minute
errors in crontab file, can't install.
Do you want to retry the same edit? 
Run Code Online (Sandbox Code Playgroud)

重置变量的正确方法MAILTO是使用空引号,如下所示:

MAILTO=''
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。


小智 5

如果 /var/spool/cron 分区已满 100%,也会发生此错误。检查您的可用磁盘空间并确保那里有一些可用字节。