Erstellen Sie einmal pro Minute ein neues Archiv mit "crontab".


9

Ich versuche, mit dem folgenden Code jede Minute crontabeine neue .tarDatei zu erstellen, die jede Minute eine neue Datei erstellt:

*/1 * * * 1,2,3,4,5 tar -cf /home/user/Archiv/$(date +"%Y%m%d%H%M").tar /home/user/Textverarbeitung/ -P

Das funktioniert nicht. Warum?


Ich kann nicht aufhören, den Titel als "Machen Sie jede Archivminute mit crontab" (Minute wie in klein) zu lesen, da der Artikel fehlt (nicht die Schuld von OP), also behebe ich ihn.
Katze

3
Warum würden Sie verwenden */1? Ist das nicht dasselbe wie nur *?
naught101

Antworten:


15

cronbehandelt %als Zeilenumbrüche. Sie müssen Escape verwenden, dh verwenden \%, um %das in verwendete Literal zu erhalten date.

Also brauchst du:

date +"\%Y\%m\%d\%H\%M" 

Oder Sie können ein Skript verwenden und alle Befehle im Skript verwenden und das Skript von aufrufen crontab.

Von man 5 crontab:

Prozentzeichen (%) im Befehl werden, sofern sie nicht mit einem Backslash (\) versehen sind, in Zeilenumbruchzeichen geändert, und alle Daten nach dem ersten% werden als Standardeingabe an den Befehl gesendet. Es gibt keine Möglichkeit, eine einzelne Befehlszeile in mehrere Zeilen aufzuteilen, z. B. das nachfolgende "\" der Shell.


4

Verwenden Sie \%anstelle von %- cron %als Zeilenumbruch.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.