
Crontable-Parameter scheinen als 'und'-Bedingungen zu fungieren. Das Beispiel
0 9-5 * * 1-5
Wird ausgeführt, wenn die Bedingungen erfüllt sind: „Minute ist Null UND Stunde ist zwischen 9 und 5 UND Tag ist zwischen Montag und Freitag“.
Was ich möchte, ist eine „oder“-Funktion, sodass ich sagen kann: „Ausführen von Montag bis Freitag ODER am 8. Tag des Monats“. Gibt es so etwas?
Mir ist klar, dass Sie zwei Einträge hinzufügen könnten, aber bei vielen Einträgen besteht die Gefahr, dass etwas vergessen wird.
Antwort1
Ich wollte sagen: benutze ,
(Komma). Von man 5 crontab
:
Lists are allowed.
A list is a set of numbers (or ranges) separated by commas.
Examples: "1,2,5,9","0-4,8-12".
Aber Ihr Fall ist etwas komplizierter und Sie können diese Funktion nutzen:
Note: The day of a command's execution can be specified by two fields day
of month, and day of week. If both fields are restricted (i.e., aren't *),
the command will be run when either field matches the current time.
For example, "30 4 1,15 * 5" would cause a command to be run at 4:30 am
on the 1st and 15th of each month, plus every Friday.
In Ihrem Fall können Sie also schreiben 0 9-5 8 * 1-5
. Dadurch wird Ihr Befehl jeden 8. des Monats und jeden Tag von Montag bis Freitag ausgeführt.
test
Eine andere Lösung besteht darin, ein ( man bash
, Abschnitt BEDINGTE AUSDRÜCKE, und ) zu verwenden man date
:
# Run on every second Saturday of the month:
0 4 8-14 * * test $(date +%u) -eq 6 && echo "2nd Saturday"