Wenn Sie nicht möchten, dass Cron Ihren Job jeden Tag oder jeden Sonntag ausführt, können Sie einen Wrapper schreiben, der Ihren Code ausführt, den nächsten ersten Sonntag ermittelt und sich an diesem Datum selbst plant.
Planen Sie dann diesen Wrapper für den nächsten ersten Sonntag des Monats. Danach wird alles selbst erledigt.
Der Code würde so etwas wie (Betonung auf etwas ... kein Fehler gemacht Prüfung) sein:
#! /bin/bash
#We run your code first
/path/to/your/code
#now we find the next day we want to run
nskip=28 #the number of days we want to check into the future
curr_month=`date +"%m"`
new_month=`date --date='$nskip days' +"%m"`
if [[ curr_month = new_month ]]
then
((nskip+=7))
fi
date=`date --date='$nskip days' +"09:00AM %D` #you may need to change the format if you use another scheduler
#schedule the job using "at"
at -m $date < /path/to/wrapper/code
Die Logik ist einfach den nächsten ersten Sonntag zu finden. Da wir am ersten Sonntag des aktuellen Monats beginnen, wird durch Hinzufügen von 28 entweder der letzte Sonntag des aktuellen Monats oder der erste Sonntag des nächsten Monats angezeigt. Wenn es sich um den aktuellen Monat handelt, erhöhen wir auf den nächsten Sonntag (der in der ersten Woche des nächsten Monats liegt).
Und ich habe "at" verwendet. Ich weiß nicht, ob das Betrug ist. Die Hauptidee ist jedoch, den nächsten ersten Sonntag zu finden. Sie können den gewünschten Scheduler danach ersetzen, da Sie das Datum und die Uhrzeit kennen, zu der Sie den Job ausführen möchten (ein anderer Scheduler benötigt möglicherweise eine andere Syntax für das Datum).
Sie könnten Ergebnisse erhalten, diese Frage auf serverfault.com veröffentlichen. –