Как исправить ошибку "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