Moin moin,
in einem Verzeichnis wird minütlich eine Bild abgelegt, praktischer Weise enthält der Dateiname Datum und Uhrzeit z.B.
"20171101-215744.jpg"
"20171101-215844.jpg"
"20171101-215944.jpg"
"20171101-220044.jpg" <- volle Stunde (22:00)
"20171101-230144.jpg"
Aus Platzgründen habe ich mir überlegt, alle Bild-Dateien die älter als 5 Tage sind werden gelöscht, bis auf die Bild-Dateien zur vollen Stunde.
Folgender Befehl testete ich erfolgreich im Terminal:
Diesen Befehl "stopfte" ich in den Crontab, dort funktioniert dieser nicht. Warum nicht???
Ermitteln konnte ich, dass die Ursache beim Platzhalter {01..59} liegen muss, den im Crontab funktioniert folgende Variante
Dann müsste der Befehl 59 mal in den Crontab, aber das ist nicht Sinn der Sache.
Ich habe unzählige Platzhalter-Varianten getestet, ohne Erfolg.
{01..59}
{01-59}
"{01..59}"
[01..59]
[01-59]
"[01..59]"
{!00}
[!00]
"{!00}"
"[!00]"
usw.
Terminal und Crontab (crontab -e) wird unter gleichem Benutzer ausgeführt.
Das gleiche Problem besteht, wenn der Befehl in einem Bash-Skript ausgeführt wird. Dabei wurden die Interpreter "#!/bin/sh" und "#!/bin/bash" genutzt.
Fehlermeldung per Mail:
Warum funktioniert der find-Befehl in der Konsole, aber nicht im Crontab und in einem Skript???
Wie muss der Platzhalter im Crontab richtig angegeben werden?
in einem Verzeichnis wird minütlich eine Bild abgelegt, praktischer Weise enthält der Dateiname Datum und Uhrzeit z.B.
"20171101-215744.jpg"
"20171101-215844.jpg"
"20171101-215944.jpg"
"20171101-220044.jpg" <- volle Stunde (22:00)
"20171101-230144.jpg"
Aus Platzgründen habe ich mir überlegt, alle Bild-Dateien die älter als 5 Tage sind werden gelöscht, bis auf die Bild-Dateien zur vollen Stunde.
Folgender Befehl testete ich erfolgreich im Terminal:
Code:
find /var/www/upload/????????-??{01..59}??.jpg -mtime 5 -exec rm -v {} \;
Diesen Befehl "stopfte" ich in den Crontab, dort funktioniert dieser nicht. Warum nicht???
Code:
00 05 * * * find /var/www/upload/????????-??{01..59}??.jpg -mtime 5 -exec rm -v {} \;
Code:
00 05 * * * find /var/www/upload/????????-??01??.jpg -mtime 5 -exec rm -v {} \;
Ich habe unzählige Platzhalter-Varianten getestet, ohne Erfolg.
{01..59}
{01-59}
"{01..59}"
[01..59]
[01-59]
"[01..59]"
{!00}
[!00]
"{!00}"
"[!00]"
usw.
Terminal und Crontab (crontab -e) wird unter gleichem Benutzer ausgeführt.
Das gleiche Problem besteht, wenn der Befehl in einem Bash-Skript ausgeführt wird. Dabei wurden die Interpreter "#!/bin/sh" und "#!/bin/bash" genutzt.
Fehlermeldung per Mail:
Code:
Subject: Cron <webcam@WebCam> find /var/www/upload/????????-??{01..59}??.jpg -mtime 5 -exec rm -v {} \;
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/webcam>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=webcam>
Message-Id: <E1eP0Mj-00031M-2X@WebCam.local>
Date: Wed, 13 Dec 2017 07:18:01 +0100
find: ‘/var/www/upload/????????-??{01..59}??.jpg’: Datei oder Verzeichnis nicht gefunden
Wie muss der Platzhalter im Crontab richtig angegeben werden?
0 commentaires:
Enregistrer un commentaire