Как исправить ошибку "Bad минута" при установке нового crontab

Я установил свежую Ubuntu 16.04, чтобы заменить мою ОС Windows.

Я пытаюсь настроить cronjobs для запуска mangento 2.1 через Ampps softaculous. Программное обеспечение успешно установлено (ampps и magento) и работает хорошо. Я пытаюсь настроить crontab, но, кажется, есть ошибка в первой строке второй 25.

Это то, что я пытаюсь добавить в crontab для пользователя Ampps, используя команду 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

Что я делаю неправильно?

Я следовал за сообщением об ошибке в администраторе magento 2.1, которое ссылалось на эту ссылку устранения неполадок для версии 2.0 и на это руководство по конфигурации

8 ответов

Решение

Каждая строка crontab должна начинаться со времени, когда должна быть выполнена команда, а затем с командой. Общий формат:

Min Hour Day Month DayOfWeek Command

Итак, бежать command в 10:15 каждое воскресенье вы должны делать:

15 10 * * 0 command

Я не уверен, каковы ваши команды, но у вас есть строки, которые не начинаются с определения времени. Я не понимаю, что это за строки:

* * * * * /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

Итак, убедитесь, что вы следуете формату и у вас все будет хорошо. Если это не ясно, отредактируйте свой вопрос и объясните, какие команды вы пытаетесь выполнить.

Из моего предыдущего опыта это было связано с символом CR/LF перед первой строкой cron (так как он редактировался из Windows, а не из Linux напрямую). Я заметил и удалил этот символ из HEX-редактора.

Этот тип ошибки также может возникать, если вы пытаетесь сбросить переменные cron на пустые значения, например:

MAILTO=me@example.com
* * * * * do some stuff with error reporting
MAILTO=
* * * * * do another stuff too verbose to receive emails

Обратите внимание на пустую строку после MAILTO= в строке 3. Это приведет к сообщению:

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? 

Правильный способ сброса MAILTO переменная должна использовать пустые кавычки, например:

MAILTO=''

Надеюсь это поможет.

Эта ошибка также происходит, если ваш раздел /var/spool/cron заполнен на 100%. Проверьте свободное место на диске и убедитесь, что у вас там есть несколько свободных байтов.

В моем случае (и, похоже, в случае с OP), проблема заключалась в том, что у меня была новая строка в команде для выполнения, что-то вроде этого

5 0 * * * some_command -some_param
-another_param

Переполненная строка была, конечно, интерпретирована как новая запись cron, и cron справедливо жаловался, что начало этой строки не является допустимым минутным идентификатором.

Следующая команда исправила мою проблему с этой проблемой

perl -pi -e 's|\r\n|\n|' /var/spool/cron/root

Проблема заключалась в том, что разделители строк Windows (CRLF) расстраивали cron на базе Linux. Замена разделителей на разделители строк в Linux (LF) устранила проблему.

Это также может произойти, если значение cron для места минуты действительно неверно.

Например, вот cron, который запускается каждые 2 минуты:

  • Неправильный Крон:/2 * * * *
  • Правильный Крон:*/2 * * * *

Дальнейшее чтение: Справочная статья Ubuntu о Cron и Crontab .

Это может быть ошибка при копировании из текстового редактора. Все должно быть в одной строке, например:

Неправильный:

      source your-venv/basch/etc
python3 /yourhome/directory/manage.py

Правильный:

      source your-venv/basch/etc python3 /yourhome/directory/manage.py
Другие вопросы по тегам