Gibt es eine Zeichenbeschränkung, die ein Befehl in einer Crontab haben kann?
Ich habe eine Crontab mit einem 178-Zeichen-Befehl und es scheint bei der Ausführung bei 164 abgeschnitten zu werden. Ich kann diese Nummer an der E-Mail erkennen, die ich erhalte, und an den Farben, die sich von diesem Zeitpunkt an ändern.
Also, ist es eine "offizielle" Einschränkung? Ich kann keine Dokumentation dazu finden.
Antworten:
Wow, ich habe gefunden, was mein Problem ist und es hatte nichts mit der Leitungslänge zu tun.
Es stellte sich heraus, dass mein Befehl ein% (Prozentzeichen) enthielt, was in crontab eine besondere Bedeutung hat. Es wird zur Texteingabe in STDIN verwendet (siehe Warum funktioniert meine Crontab nicht und wie kann ich das Problem beheben ? ).
Also musste ich entkommen. Mein Befehl war:
wird
quelle
%
verursachte ein paar Stunden Bestürzung!Erfahrungsgemäß gibt es ein 999 Zeichen pro Zeile Abschneiden auf allen meinen Ubuntu Maschinen, obwohl ich noch keine erläuternde , Dokumentation.
Ich habe Ubuntu 10.04, 12.04 und 14.04 getestet und die Anzahl der 999 Zeichen wird beim ersten Nicht-Leerzeichen nach dem Zeitplan gestartet (in meinem Beispiel entspricht der Zeitplan
* * * * *
1 Mal pro Minute).Beobachten:
Zuerst zählen wir die Zeichen des Befehls, den wir unserer Crontab hinzufügen werden - ohne den Zeitplan :
Fügen Sie diesen Befehl zu unserer crontab hinzu, um jede Minute ausgeführt zu werden:
Warten Sie eine Minute und prüfen Sie, ob eine
/tmp/test.log
Datei erstellt wurde, die alle Ihre "a" enthält:Starten Sie neu, entfernen Sie die Crontab- und Protokolldatei:
Fügen Sie den gleichen Befehl wie zuvor hinzu, jedoch nur 1 Zeichen länger (in meinem Fall
B
):/tmp/test.lo
mit dem Namen "a" erstellt wurde. Dies liegt daran, dass das 1000. Zeichen abgeschnitten wurde.Entfernen Sie zur Bestätigung das hinzugefügte
B
und fügen Sie stattdessen wie folgt ein1
zum Dateinamen hinzu :/tmp/test1.lo
mit dem Namen "a" erstellt wird./bin/echo
bis/usr/bin/echo
und stellen Sie fest, dass Sie weitere 4 Zeichen aus Ihrem Befehl entfernen müssen.quelle
cron
auf meinem Ubuntu 14.04 schneidet den Befehl stillschweigend auf 999 Zeichen ab. Das ist so verrückt, ich habe eine Weile gebraucht, um es zu verdauen. Und dies scheint der einzige Ort im Internet zu sein, der dies dokumentiert, mit einer positiven Bewertung.... && stop-power-plant; start-power-plant
und cron hackt nur leise ab; start-power-plant
/bin/sh: 1: Syntax error: Unterminated quoted string
, aber es gibt keine Garantie dafür.