我安装了一个全新的 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)
因此,请确保遵循格式,您应该没问题。如果这不清楚,请编辑您的问题并解释您尝试运行的命令。
根据我之前的经验,这是由于第一个 cron 行之前有一个 CR/LF 字符(因为它是从 Windows 直接编辑的,而不是直接从 Linux 编辑的)。我注意到并从十六进制编辑器中删除了该字符。
小智 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)
希望这可以帮助。