GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man Cron anweisen, jede zweite Woche einen Job auszuführen?

Antwort

Ändern Sie Ihre Dienstag-Cron-Logik so, dass sie alle zwei Wochen seit der Epoche ausgeführt wird .

Zu wissen, dass eine Woche 604800 Sekunden hat (ohne Berücksichtigung von DST-Änderungen und Schaltsekunden, danke), und die Verwendung von GNU date:

0 6 * * Tue expr `date +\%s` / 604800 \% 2 >/dev/null || /scripts/fortnightly.sh

Beiseite

Kalenderarithmetik ist frustrierend.

Die Antwort von @xahtep ist großartig, aber wie @Doppelganger in den Kommentaren feststellte, wird sie an bestimmten Jahresgrenzen fehlschlagen. Nichts von date Die "Woche des Jahres"-Spezifizierer des Dienstprogramms können hier helfen. Irgendein Dienstag Anfang Januar wird zwangsläufig die Wochenparität des letzten Dienstags im Vorjahr wiederholen:2016-01-05 (%V), 2018-01-02 (%U) und 2019-01-01 (%W) .


Pilcrows Antwort ist großartig. Dies führt jedoch dazu, dass das Skript fortnightly.sh gerade ausgeführt wird Woche (seit der Epoche). Wenn das Skript auf ungerade ausgeführt werden soll Wochen können Sie seine Antwort ein wenig anpassen:

0 6 * * Tue expr \( `date +\%s` / 604800 + 1 \) \% 2 > /dev/null || /scripts/fortnightly.sh

Wenn Sie die 1 in eine 0 ändern, wird sie auf gerade Wochen zurückgesetzt.


Wie wäre es damit, es hält es in crontab auch wenn es in den ersten fünf Feldern nicht genau definiert ist:

0 6 * * Tue expr `date +\%W` \% 2 > /dev/null || /scripts/fortnightly.sh

Linux
  1. So legen Sie einen Cron-Job in TrueNAS fest

  2. Wie führe ich "date" innerhalb eines Cron-Tab-Jobs aus?

  3. Wie man einen Cronjob an bestimmten Wochentagen ausführt

  4. Cronjob alle 1 Stunde und 10 Minuten ausführen

  5. Wie kann ich einen Cron-Job planen, der alle 10 Sekunden unter Linux ausgeführt wird?

Cron-Jobs alle 5, 10 oder 15 Minuten ausführen

So planen Sie einen Job in Cron so, dass er jede Stunde in Ubuntu 20.04 ausgeführt wird

So richten Sie einen Cron-Job in Debian 10 ein

So richten Sie einen Cron-Job in cPanel ein

So führen Sie jede Woche am Sonntag einen Crontab-Job aus

Wie würde ich einen Cron-Job dazu bringen, alle 30 Minuten ausgeführt zu werden?