PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cronjob, negative Zeitangabe?



BlueJay
05-11-2006, 14:19
Hallo Leute,

das Backup-bash ist wieder bei mir gelandet :o , ich zum Co-Sysop aufgestiegen.

Diesmal suche ich eine Möglickeit, einen Cronjob eine Viertelstunde vor Monatsende laufen zu lassen. (am jeweils 1. um 0:00:01 wird geplättet, vorher soll ein Backup gezogen werden.)

Habe mir die Pfoten wundgegoogelt nach negativen Zeitpunkten, und möchte mit den wunden Pfoten nicht unbedingt 12 (13) Termine eintragen müssen. :rolleyes:

Kann mir jemand weiterhelfen?

so long,
BlueJay

bla!zilla
05-11-2006, 19:16
Hi,

probier bitte folgendes Skript aus. Durch Zufall beim googlen gefunden und mal auf der Platte im Ablage-Verzeichnis abgelegt. :)



#!/bin/sh

# Das Aktuelle Jahr, Monat und Tag ermitteln

YEAR_NOW=`date +%Y` # Das Aktuelle Jahr mit 4 Zeichen (2003)

MONTH_DAY_NOW=`date +%d%m` # Tag und Monat zusammen (2804 für 28 Aril)

# Überprüfen ob das aktuelle Jahr ein Schaltjahr ist

if [ $(( $YEAR % 400 )) -eq 0 ]; # Wenn das Jahr durch 400 teilbar ist,

then # ist es ein Schaltjahr

FEB_LAST="2902"

elif [ $(( $YEAR % 100 )) -eq 0 ]; # Wenn das Jahr durch 100 teilbar ist,

then # ist es kein Schaltjahr

FEB_LAST="2802"

elif [ $(( $YEAR % 4 )) -eq 0 ]; # Normales Schaltjahr

then # Das Jahr ist durch 4 teilbar

FEB_LAST="2902"

else # Nicht-Schaltjahre

FEB_LAST="2802"

fi

# Restliche Monate definieren (AnzahlTage und Monate zusammen)

MONTH_LIST="3101 ${FEB_LAST} 3103 3004 3105 3006 3107 3108 3009 3110 3011 3112"

IS_LAST=0

for MONTH_LAST in ${MONTH_LIST};

do

if [ "${MONTH_DAY}" == "${MONTH_LAST}" ];

then

IS_LAST=1

fi

done

# Wenn ${IS_LAST} gleich 1 ist, ist jetzt der letzte Tag im Monat

if [ $IS_LAST -eq 1 ];

then

echo -e "Heute ist der letzte Tag im Monat `date +"%m"`"

else

echo -e "Leider noch nicht der letzte Tag im Monat..."

fi

exit 0


Ich habe zu deinem Problem gerade auch noch mal gesucht, das Problem haben / hatten auch mehrere, die häufigste Lösung ist und war aber ein Shell-Skript.

anda_skoa
05-11-2006, 20:17
Man könnte es in etwa so machen:

cronjob täglich 23:45
im Script mit



date +"%m"

bzw


date -d tomorrow +"%m"

Prüfen, ob die Zahl verschieden ist => morgen ist ein anderer Monat

Ciao,
_