web-dev-qa-db-fra.com

Comment réparer l'erreur “Bad minute” lors de l'installation d'une nouvelle crontab

J'ai installé une nouvelle Ubuntu 16.04 pour remplacer mon système d'exploitation Windows.

J'essaie de configurer cronjobs pour exécuter mangento 2.1 via Ampps softaculous. Le logiciel a été installé avec succès (ampps et magento) et il fonctionne bien. J'essaye d'installer une crontab mais il semble qu'il y ait une erreur sur la première ligne deuxième 25.

C’est ce que j’essaie d’ajouter à la crontab de l’utilisateur Ampps, à l’aide de la commande 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

Qu'est-ce que je fais mal?

J'ai suivi un message d'erreur dans magento 2.1 admin qui faisait référence à ce lien de dépannage pour la version 2. et à ce guide de configuration

7
user564658

Chaque ligne de crontab doit commencer par l'heure à laquelle la commande doit être exécutée, puis la commande. Le format général est:

Min Hour Day Month DayOfWeek Command

Donc, pour exécuter command à 10h15 tous les dimanches, vous feriez:

15 10 * * 0 command

Je ne sais pas quelles sont vos commandes, mais vous avez des lignes qui ne commencent pas par une définition temporelle. Je ne comprends pas ce que sont les lignes comme ceci:

* * * * * /usr/local/ampps/php-5.6/etc

C'est un temps mais pas de commande. Vous lui donnez un répertoire. Et les lignes comme celle-ci ont des commandes mais pas de temps:

/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

Alors, assurez-vous de suivre le format et ça devrait aller. Si ce n'est pas clair, éditez votre question et expliquez les commandes que vous essayez d'exécuter.

8
terdon

Ce type d'erreur peut également se produire si vous essayez de réinitialiser les variables cron à des valeurs vides, comme ceci:

[email protected]
* * * * * do some stuff with error reporting
MAILTO=
* * * * * do another stuff too verbose to receive emails

Notez la ligne vide après MAILTO= à la ligne 3. Cela entraînera le message suivant:

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? 

La méthode correcte pour réinitialiser la variable MAILTO consiste à utiliser des guillemets vides, comme ceci:

MAILTO=''

J'espère que cela t'aides.

2
ob-ivan

D'après mon expérience précédente, cela était dû à un caractère CR/LF avant la première ligne cron (puisqu'elle a été modifiée directement de Windows et non de Linux). J'ai remarqué et enlevé ce caractère d'un éditeur HEX.

2
robregonm

Cette erreur se produit également si votre partition/var/spool/cron est saturée à 100%. Vérifiez votre espace disque disponible et assurez-vous d'avoir quelques octets libres.

0
Gsemi

La commande suivante a résolu mon problème avec ce problème

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

Le problème était que les séparateurs de lignes Windows (CRLF) bouleversaient le cron basé sur Linux. Le fait de changer les séparateurs pour qu'ils soient des séparateurs de ligne Linux corrige le problème.

0
Derek Hazell

Dans mon cas (et il semble que ce soit aussi le cas de OP), le problème était que j'avais une nouvelle ligne dans la commande à exécuter, quelque chose comme ceci

5 0 * * * some_command -some_param
-another_param

La ligne en débordement a bien sûr été interprétée comme une nouvelle entrée cron, et cron s'est plaint à juste titre que le début de la ligne that n'était pas un identifiant minute valide.

0
Zoltán