Script soll stündlich Files erstellen, was ist mit 00:05 Uhr

Linuxneuling

Linuxneuling

Tripel-As
Moin,

hab ein Skript programmiert, der Stündlich die Daten in einem zip File archiviert. Das Skript läuft immer 5min nach der vollen Stunde und wird nach aktuellen Datum und Uhrzeit der letzten Stunde benannt. Jetzt habe ich ein Problem, wenn ich das Skript um 00:05 startet und die Date Variable wie folgend
Code:
dat=$(date --date='1hour ago' +%g%m%d%H)
gesetzt ist, da bin ich mir nicht sicher, ob die Datum stimmt? Ich denke eher nicht, wie könnte man das Problem lösen? Muss ich da wirklich ein separates Skript für 00:05 Uhr erstellen? Und wahrscheinlich für Monatserste auch ein separates Skript??? Gibt es da eine andere Lösung? Würde mich sehr auf eure Tipps freuen!
 
Was genau soll denn an dem Format nicht stimmen? Und wenn Du nicht sicher bist, ob es funktioniert, wieso probierst Du es nicht einfach mal aus, guckst, wie der Datumstring aussieht?
 
Wenn das Skript um 00:05 ausgeführt wird, stimmt die Datumsvariable
Code:
dat=$(date --date='1hour ago' +%g%m%d%H)
nicht mehr, da der Tag wieder anders ist, da hab ich ein separates Skript erstellt, der den Tag auch um einen Tag zurück geht. Bei Monatsersten detto. Ist aber eher unwahrscheinlich, denn durch googlen hab ich auch nichts gefunden, dass eine andere Möglichkeit gibt.
 
Wenn ich
Code:
echo $(date --date='19hour ago' +%g%m%d%H)
kommt 06042400 heraus, bei
Code:
echo $(date --date='20hour ago' +%g%m%d%H)
kommt 06042323, d.h., dass auch der Tag richtig umgestellt wird. Oder suchst Du das nicht? Welches System benutzt Du? Ich habe Debian etch mit date (GNU coreutils) 5.94
 
hmm... also wenn das script um 0:05 ausgeführt wird... und du "...1hour ago..." benutzt... dann ist doch imho klar (quasi normal) das der tag dann net stimmt...
warum eigentlich dieses "...1hour ago..." ? *confused*
 
daedalus schrieb:
hmm... also wenn das script um 0:05 ausgeführt wird... und du "...1hour ago..." benutzt... dann ist doch imho klar (quasi normal) das der tag dann net stimmt...
warum eigentlich dieses "...1hour ago..." ? *confused*

Am Server landen ziemlich viele Daten Stundenweise, die weggesichert werden... So kann man diese leichter finden, wenn man weiss um welche Zeit man die Daten hochgeladen hat...

rikola schrieb:
Wenn ich
Code:

echo $(date --date='19hour ago' +%g%m%d%H)

kommt 06042400 heraus, bei
Code:

echo $(date --date='20hour ago' +%g%m%d%H)

kommt 06042323, d.h., dass auch der Tag richtig umgestellt wird. Oder suchst Du das nicht? Welches System benutzt Du? Ich habe Debian etch mit date (GNU coreutils) 5.94
Ich drücke es noch mal genauer aus: Das Skript wird 5min nach jeden vollen Stunde ausgeführt. Für heute ist von 1:05 bis 23:05 mit folgende Variable kein Problem $(date --date='1hour ago' +%g%m%d%H)... Jedoch um 00:05 muss der Variable wieder anders sein, um am richtigen Tag zu kommen: (date -d"-1 hour -1 day" +%g%m%d%H)
Am Monatsersten muss man noch zusätzlich -1 month setzen um auf richtigen Monat zu kommen!

Ich wollte hier fragen, ob das alles in EINEM Skriopt realisierbar ist? Ich denke eher nicht mehr, trotzdem sind noch Alternativen willkommen. Es ist einfach sehr mühsam, wenn man eine Änderung im Skript durchführt, muss man dies sogar 3 mal machen....
 
Zuletzt bearbeitet:
sry, wenn ich gerad aufm schlauch stehe... aber wenn du um 0:05 ein backup machst das auch passend heißt,... ähm, findeste die daten dann nicht mindestens genauso schnell? *grübel*
 
Hat sich schon erledigt! Date ist schlau genug... Es reicht -1 hour ago und die Datum bzw. Monat stimmt... hätte es einfach auf einem Testsystem mit geänderter Uhrzeit/Datum versuchen sollen :-/
 
Ich verstehe das Problem nicht. Wenn Du am 12. eines Monats um 0:05 das Skript startest, soll die Datumsvariable dann die Zahl 12 oder die Zahl 11 enthalten? Wenn die Zahl 11, dann macht doch das date--Format, wie Du es am Anfang angegeben hast, genau das richtige, da date (zumindest in dem Beispiel, dass ich gegeben habe) sowohl die Zeit als auch den Monat korrekt einstellt!!

Wenn sie eine 12 enthalten soll, musst Du Dir zwei Variablen anlegen, eine, die das aktuelle Datum enthaelt und eine, die die Zeit vor einer Stunde enthaelt, und diese dann zu einer Variablen zusammen'pasten'.
 

Ähnliche Themen

Zippen aus der Bash heraus

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

Zurück
Oben