Ich habe ziemlich viel nachgeforscht, wie das geht, und ich sehe, dass es in cron keine direkte Möglichkeit gibt, einen Job zu erledigen, sagen wir, jeden zweiten Donnerstag.
Im Moment neige ich dazu, ein Skript zu erstellen , das nur jede Woche ausgeführt wird und eine "Flag" -Datei berührt, wenn es ausgeführt wird und die Datei bereits vorhanden ist, um die Datei zu entfernen (und nicht das auszuführen) zweiwöchentliche Aktion).
Meine Frage ist, gibt es einen eleganteren oder einfacheren Weg, um dieses Ziel eines Bash-Skripts von Aktionen zu erreichen, das alle zwei Wochen automatisch ausgeführt wird?
Vielen Dank!
Antworten:
Ich habe Bash benutzt, um zu rechnen, weil ich faul bin. schalte das auf was auch immer du willst. Ich nutze den 1. Januar 1970 als Donnerstag; Für andere Wochentage müssten Sie einen Offset anwenden. Cron muss den Prozentzeichen entkommen.
Schneller Check:
Hinweis: Ich habe zufällige Zeiten ausgewählt, um zu zeigen, dass dies funktioniert, wenn es am Donnerstag zu jeder Zeit ausgeführt wird. Außerdem habe ich Daten ausgewählt, die die Jahresgrenzen überschreiten und Monate mit jeweils 4 und 5 Donnerstagen enthalten.
Ausgabe:
quelle
Eine Möglichkeit ist die Verwendung des
at
Dienstprogramms unter Linux. Sie können dies am Ende Ihres Skripts einfügen:Dabei ist X die Zeit, zu der Sie Ihr Skript ausführen möchten. Zum Initialisieren rufen
at
Sie einfach an, wann Sie es das erste Mal ausführen möchten, und mit der obigen Anweisung wird Ihr geplanter Anruf immer wieder erneuert.quelle
Wenn Sie
anacron
auf dem System verwenden können, werden die Dinge viel einfacher sein. Zur Verwendunganacron
muss es installiert sein und Sie müssen über Root-Zugriff verfügen. Es funktioniert nicht auf älteren Systemen (zB RHEL 5.x), die älteren Versionen von ancron laufen NUR beim Booten. Es funktioniert mit neueren Systemen (zB RHEL 6.x).Mit
anacron
können Jobs flexibler eingeplant werden, z. B. X-Job einmal pro Woche ausführen. Führt auchanacron
Jobs aus, wenn der Computer verfügbar wird, dh Sie müssen nicht berücksichtigen, wann das System hoch- oder runtergefahren ist.Um ein Skript jede zweite Woche auszuführen, müssen Sie eine Zeile wie die folgende in die / etc / anacrontab einfügen:
Schauen Sie sich die Manpage für Details an.
quelle
anacron
ist eindeutig die sauberste Lösung, IMO (es sei denn, dies hat einige unerwünschte Konsequenzen für einige Leute).Ich bin mir nicht sicher, ob es eine elegantere Art gibt, die jede zweite Woche zu definieren, aber das könnte für Sie funktionieren.
Dadurch wird das Skript am ersten und dritten Donnerstag des Monats um 6:00 Uhr morgens gestartet.
quelle
1-7,15-21,29-31
Ich würde es jede Woche ausführen und das Skript überprüfen lassen, um festzustellen, ob die Wochennummer eine ungerade Zahl ist: Wenn ja, beenden.
Dies würde einige weitere Überlegungen erfordern, um von Dezember bis Januar zu funktionieren.
Vielleicht hat das Skript eine Flag-Datei "Letzte erfolgreiche Ausführung" gesetzt. Überprüfen Sie beim Starten des Skripts, ob die Flag-Datei vor 14 Tagen zuletzt geändert wurde.
quelle