crontab/cronjobs | DSM 6-7321

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.
Ich würde zumindest den Pfad des date-Kommandos ergänzen. Bekommst Du per "which date".
 
Okay, geändert, aber kein anderes Verhalten.
 
Ich denke, ich habe nun etwas mehr. Wenn ich den Teil "_$(/bin/date +%Y-%m-%d_%H-%M-%S)" nicht verwende, dann laufen die Zeilen. Wie kann ich sehen, wie die Syntax aussieht in DSM 6 ?
 
Es ist tatsächlich so, was in DSM 5.2 funktioniert, geht in DSM 6 nicht mehr. Wenn ich _$(/bin/date) verwende, ist von daher alles bestens, die cron-Zeilen laufen wieder. Jetzt stehen neue Tests an, um das zu untermauern.
 
Wenn ich _$(/bin/date) verwende, ist von daher alles bestens, die cron-Zeilen laufen wieder.
d.h. der cron legt sich nur quer wenn du neben /bin/date noch die Formatparameter angibst? Falls ja mal probiert mit ' und ' um die Parameter? So wäre es eigentlich ganz korrekt
Code:
$(/bin/date +'%Y-%m-%d_%H-%M-%S')
 
Okay, teste ich mal. Bislang habe ich in den Syntaxbeschreibungen das so aber nicht gesehen, da stand immer sowas, wie "date +%......." aber nicht "date +'%......." - aber egal, es wird getestet.
 
Erst einmal tag in die Runde - also bei mir läuft der crond zwar auch, aber liest scheinbar auch nicht die /etc/crontab ... was mir aber aufgefallen ist, dass mit dem DSM 6 Update das Verzeichnis /etc/cron.d/ hinzu gekommen ist.

Ich habe die crontab dam mal reinkopiert - keine Änderung.

Gruss

ch90045
 
...wie "date +%......." aber nicht "date +'%......." - aber egal, es wird getestet.

Bei mir im Script funktioniert folgende Variante:
date +"[%Y%m%d - %H%M%S] ENDE">>$LOGFILE

Evtl. hilft das weiter?
 
Die Frage ist, wie dies eingebaut werden muß, dass der Dateiname entsprechend aussieht. Momentan habe ich

*/15 * * * * root /bin/su -s /bin/sh -c "/usr/local/bin/php56 -f /volume1/web/owncloud/cron.php" http >> /volume1/web/owncloud/data/logs/cron_php_$(/bin/date +%Y-%m-%d_%H-%M-%S).log 2>&1

also

cron_php_$(/bin/date +%Y-%m-%d_%H-%M-%S).log

und laut obiger Variante müßte dann das so aussehen :

cron_php_$(/bin/date +'%Y-%m-%d_%H-%M-%S').log

oder dann vielleicht

cron_php_$(/bin/date +"[%Y%m%d - %H%M%S]").log

denn der Eintrag

date +"[%Y%m%d - %H%M%S] ENDE">>$LOGFILE

scheint etwas IN eine Logdatei zu schreiben, jedoch nicht in den Namen der Logdatei, oder seh ich das falsch?
 
Nichts davon funktioniert. Das einzige, was geht, ist "/bin/date", also zB. "test2__$(/bin/date).txt 2>&1"
 
Vielleicht probierst Du es einmal mit einem etwas anderen Ansatz, indem Du mit einem Shell-Skript arbeitest. Vielleicht klappt es damit gleich. Wenn nicht, kannst Du /bin/date eigenständig ausführen und das Ergebnis einer Variablen zuweisen, die Du dann für den Dateinamen verwendest.
 
Wie kann ich eine solche Variablenvergabe in der crontab hinterlegen? Das Problem ist leider auch, ich habe versucht diverse crontab-Zeilen in einem Script zusammenzufassen und dann das Script aufzurufen. Das aber habe ich nicht zum Laufen gebracht.
 
................. /bin/date eigenständig ausführen und das Ergebnis einer Variablen zuweisen..........

Das war der Hinweis :


filedatetime=/bin/date +%Y-%m-%d_%H-%M-%S

*/15 * * * * root /usr/local/bin/php56 /volume1/web/owncloud/data/scripts/cron_lock_unlock.sh >> /volume1/web/owncloud/data/logs/cron_lock_unlock__$(${filedatetime}).log 2>&1

Jetzt läufts. Suppiii, Danke!
 
Das funktioniert aber wieder nur in DSM 6, in DSM 5.2 wird die Variable nicht an den Dateinamen übergeben.... :confused:
 
Probiere es einmal mit $filedatetime statt $(${filedatetime}).
 
Geht leider auch nicht. Ich denke in DSM 5.2 wird die Variable filedatetime nicht definiert.
 
Und wenn Du das per Semikolon in die Aufrufzeile aufnimmst?

*/15 * * * * root filedatetime=/bin/date +%Y-%m-%d_%H-%M-%S ; /usr/local/bin/php56 /volume1/web/owncloud/data/scripts/cron_lock_unlock.sh >> /volume1/web/owncloud/data/logs/cron_lock_unlock__$(${filedatetime}).log 2>&1
 
Leider auch nicht. Auch nicht, wenn es so alleine steht :

* * * * * root filedatetime=/bin/date +%Y-%m-%d_%H-%M-%S

Ist nun aber in DSM 5.2 nicht so tragisch, weil die Variablenfolge im Dateinamen funktioniert :

_$(/bin/date +%Y-%m-%d_%H-%M-%S).log
 
filedatetime=/bin/date +%Y-%m-%d_%H-%M-%S

*/15 * * * * root /usr/local/bin/php56 /volume1/web/owncloud/data/scripts/cron_lock_unlock.sh >> /volume1/web/owncloud/data/logs/cron_lock_unlock__$(${filedatetime}).log 2>&1

Das hat zwar gut funktioniert mit der Variablen, allerdings wurde in der crontab die Zeile

filedatetime=/bin/date +%Y-%m-%d_%H-%M-%S

bei jedem Neustart aus der crontab gelöscht. Kann sich das jemand erklären? Was kann ich dagegen tun? Muss die Variable großgeschrieben sein (FILEDATETIME ?), also

FILEDATETIME=/bin/date +%Y-%m-%d_%H-%M-%S

? :confused:

Im Moment scheint die Lösung mit "\" vor den "%"

..............logs/cron_lock_unlock__$(/bin/date +\%Y-\%m-\%d_\%H-\%M-\%S).log 2>&1

gut zu funktionieren, mal sehen.
 
Zuletzt bearbeitet:
Heute habe ich zudem vom Synology-Support dazu folgendes erhalten :

"In DSM 6 wurde von Busybox auf GNU-Utilities gewechselt und die sh-Shell durch eine bash ersetzt.

Grundsätzlich funktioniert Ihr Befehl:

admin@DS214-Dom:~$ echo $(date +%Y-%m-%d_%H-%M-%S)
2016-04-27_10-17-08

Meine Vermutung ist, dass schlicht der crond diese Syntax nicht mag. Daher mein Lösungsansatz: Geben Sie das ganze doch einfach der bash mit:

/bin/bash -c "echo $(date +%Y-%m-%d_%H-%M-%S)"


Was bedeuted diese Umstellung insgesamt?
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat