So beheben Sie den Fehler "Bad Minute" bei der Installation einer neuen Crontab

7

Ich habe ein neues Ubuntu 16.04 installiert, um mein Windows-Betriebssystem zu ersetzen.

Ich versuche, Cronjobs einzurichten, um Mangento 2.1 über Ampps softaculous auszuführen. Die Software wurde erfolgreich installiert (sowohl Ampps als auch Magento) und läuft einwandfrei. Ich versuche, eine Crontab einzurichten, aber es scheint, dass in der zweiten Zeile der zweiten Zeile 25 ein Fehler vorliegt.

Dies ist, was ich versuche, mit dem Befehl zur crontab für den Ampps-Benutzer hinzuzufügen 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

Was mache ich falsch?

Ich habe in magento 2.1 admin eine Fehlermeldung erhalten, die auf diesen Link zur Fehlerbehebung für die Version 2.0 und auf dieses Konfigurationshandbuch verweist

user564658
quelle
2
Den ersten Blick: Sie können Linien haben , die keine haben , * * * * *so cronkönnen die Elemente nicht interpretieren. Crontabs werden durch Zeilenumbrüche mit dem Status "Diese Aufgabe wird mit der angegebenen Konfiguration ausgeführt, und diese Aufgabe wird mit einer anderen usw. ausgeführt." Getrennt . Ist dies nur ein Formatierungsfehler beim Kopieren / Einfügen oder bestehen die Zeilenumbrüche tatsächlich zwischen /usr/local/ampps/php-5.6/etcund den restlichen Zeilen, wie die Code-Formatierung zeigt?
Thomas Ward
Hey Thomas, danke dafür, als du den Zeilenumbruch erwähnt hast, habe ich die Formatierung überprüft und es hat geholfen, die jetzt installierte Crontab zu reparieren. Ich habe auch das Format in 30 20 * * * geändert und scheint jetzt zu funktionieren.
user564658
Hallo, ich verstehe das Problem weder aus deinem Beitrag noch aus den gegebenen Kommentaren und Antworten. Haben Sie Ihren Beitrag geändert, nachdem Sie Kommentare erhalten und möglicherweise die Antwort akzeptiert haben? Kommentare und akzeptierte Antworten beziehen sich beide auf Fehler in Ihren vorgeschlagenen crontabEinträgen, die entweder nicht vorhanden oder nicht mehr erkennbar sind. Es ist in Ordnung, einen Tippfehler oder eine schlechte Formulierung zu korrigieren, aber keinen Fehler, wenn Sie dabei die Bedeutung Ihres Beitrags entfernen. In diesem Fall können Ihre Leser nicht mehr verstehen, was das Programm war. Liege ich hier falsch
Cbhihe
1
@Cbhihe danke für deinen Kommentar. Sie haben absolut Recht, ich habe den Beitrag bearbeitet, nachdem ich den Kommentar von Thomas W. und die Antwort von terdon erhalten habe, und die Frage macht jetzt keinen Sinn mehr. Das tut mir leid. Ich werde Zeilenumbrüche in die Frage zurückkopieren, damit es Sinn macht.
user564658
Dieser Fehler tritt auf, wenn das Volume der Crontab-Datei voll ist.
Bokan

Antworten:

8

Jede Crontab-Zeile muss mit einer Zeit beginnen, zu der der Befehl ausgeführt werden soll, und dann mit dem Befehl. Das allgemeine Format ist:

Min Hour Day Month DayOfWeek Command

commandUm jeden Sonntag um 10:15 Uhr zu laufen , müssen Sie Folgendes tun:

15 10 * * 0 command

Ich bin nicht sicher, was Ihre Befehle sind, aber Sie haben Zeilen, die nicht mit einer Zeitdefinition beginnen. Ich verstehe nicht, was solche Zeilen sind:

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

Das ist eine Zeit, aber kein Befehl. Sie geben ihm ein Verzeichnis. Und Zeilen wie diese haben Befehle, aber keine Zeit:

/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

Stellen Sie also sicher, dass Sie dem Format folgen und es Ihnen gut gehen sollte. Wenn dies nicht klar ist, bearbeiten Sie Ihre Frage und erklären Sie, welche Befehle Sie ausführen möchten.

Terdon
quelle
3

Nach meiner vorherigen Erfahrung lag es an einem CR / LF-Zeichen vor der ersten Cron-Zeile (da es unter Windows und nicht direkt unter Linux bearbeitet wurde). Ich habe dieses Zeichen bemerkt und aus einem HEX-Editor entfernt.

Robregonm
quelle
3
Sie sollten Ihre Antwort um weitere Details erweitern.
WinEunuuchs2Unix
Wenn Sie '-': 1: schlechte Minute sehen, ist das - / l. Linux verwendet LF, während Windows CR / LF verwendet. Mit anderen Worten, es würde versucht, das Zeichen / l als erstes Zeichen des Befehls zu lesen, anstatt Teil des neuen Zeilenzeichens zu sein.
Erick Stone
3

Dieser Fehler tritt auch auf, wenn Ihre / var / spool / cron-Partition zu 100% voll ist. Überprüfen Sie Ihren freien Speicherplatz und stellen Sie sicher, dass dort einige Bytes frei sind.

Gsemi
quelle
2

Diese Art von Fehler kann auch auftreten, wenn Sie versuchen, Cron-Variablen auf leere Werte wie diesen zurückzusetzen:

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

Beachten Sie die leere Zeile nach MAILTO=Zeile 3. Dies führt zu der folgenden Meldung:

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? 

Der richtige Weg, eine MAILTOVariable zurückzusetzen, besteht darin, leere Anführungszeichen wie folgt zu verwenden:

MAILTO=''

Hoffe das hilft.

ob-ivan
quelle
0

Der folgende Befehl hat mein Problem mit diesem Problem behoben

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

Das Problem war, dass Windows Line Separators (CRLF) das Linux-basierte Cron störten. Das Problem wurde behoben, indem die Trennzeichen in Linux-Zeilentrennzeichen (LF) geändert wurden.

Derek Hazell
quelle
Ich dies versucht, sie löschte den Inhalt meiner crontab
bokan
Es passierte, weil die Fahrt voll war
Bokan
0

In meinem Fall (und es scheint auch der Fall von OP zu sein) bestand das Problem darin, dass ich eine neue Zeile im auszuführenden Befehl hatte, so etwas in der Art

5 0 * * * some_command -some_param
-another_param

Die überlaufende Zeile wurde natürlich als neuer Cron-Eintrag interpretiert, und Cron beklagte sich zu Recht, dass der Anfang dieser Zeile keine gültige Minutenkennung sei.

Zoltán
quelle