Einen crontab-Job alle X Tage ausführen

Datum: 2001-06-27
Quelle: suse-linux

Worum ging es?

Auf ähnliche Weise wie in Einen crontab-Job alle 2 Tage ausführen beschrieben kann man auch die Ausführung alle X Tage realisieren.

Code
# Aufruf: wrapper Intervall Programm / usage: wrapper interval program
INTERVAL=$1
JOB=$2
RUN_FILE=/var/run/cron_x_days.`basename $JOB`
# keine Pruefungen bisher - Dein Job ;-) / no checks until now - your task ;-)
NOW=`expr \`date +%s\` / 86400`
if test -f $RUN_FILE; then
  LAST=`cat $RUN_FILE`
  test `expr $NOW - $LAST` -lt $INTERVAL && exit 0
fi
$JOB
echo $NOW >$RUN_FILE
Beschreibung

Es wird eine Datei für den Zeitstempel benutzt, in sie wird mit $NOW der Startzeitpunkt in Tagen seit 01.01.1970 eingetragen, der gegen das aktuelle Startdatum gecheckt wird. Ist die Differenz kleiner als das vorgegebene Intervall, bricht das Script ab. Ansonsten wird der neue Startwert in die Datei eingetragen.