Anleitung: Starten eines Befehls zu einer bestimmten Uhrzeit

Pum

Neuer User
Mitglied seit
25 Mai 2007
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Mal keine Frage sondern eine Info, die vielleicht dem einen oder anderen nützt.

Ich stand vor dem Problem, auf einer unmodifizierten Fritzbox 7270 immer zu einer bestimmten Uhrzeit einen Befehl ausführen zu wollen. Es gibt schon ein paar Artikel hier im Forum zu dem Thema, aber ich habe noch nichts ganz rundes gefunden.

Hier meine Lösung:
Code:
#!/bin/sh

usage () {
	echo "Aufruf: queuecommand [-u] <HHMM> <Befehl> [Parameter...]\n" >&2
	echo "-u:                Die angegebene Uhrzeit ist in UTC" >&2
	echo "HHMM:              Uhrzeit, zu der der Befehl gestartet werden soll" >&2
	echo "Befehl, Parameter: Aufzurufender Befehl" >&2
	exit 1
}

TIMEISUTC=""		# leer: lokale Zeit, "-u": UTC

if [ "$1" = "-u" ] ; then
	TIMEISUTC="-u"
	shift
fi

TIME=$1
shift

if [ "$1" = "" ] ; then
	usage
fi

# Keine Ahnung, ob das notwendig ist
trap '' SIGHUP

# Aktuelle Zeit in Sekunden nach 1.1.1970
CURSECS=$(date +%s)

# Zeit in Skunden nach 1.1.1970, heute um TIME
SECS=$(date $TIMEISUTC -d $(date +%m%d$TIME) +%s)

if [ "$SECS" = "" ] ; then
	usage
fi

# Wenn SECS < CURSECS, dann ist diese Uhrzeit heute schon vorbei
SLEEPSECS=$(( $SECS - $CURSECS ))
if [ $SLEEPSECS -le 0 ] ; then
	SLEEPSECS=$(( $SLEEPSECS + 60 * 60 * 24 ))
fi

sleep $SLEEPSECS
exec "$@"
Der Befehl wird nur einmalig ausgeführt. Wenn das auszuführende Programm/Skript jeden Tag ausgeführt werden soll, dann sollte es als letzten Befehl etwa so eine Zeile enthalten:
Code:
exec /data/queuecommand 1234 Befehlname
Somit wird dann die nächste Ausführung geplant...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.