Cron has been extended to support 'last day of the month' and last week day of the month.
Lets recap the structure of a cron attribute:
cron -w<int_list> -d <int_list> -m<int_list> <time> time = single time slot *OR* time series int_list = comma separated integer list, see below for list of valid values
- -w day of the week . valid values are , 0 → 6 where 0 is Sunday , 1 is Monday etc
- -d day of the month, valid values are in range 0-31
- -m month valid values are in range 0-12
Remember we *AND* across -w, -d, -m then *OR* for each element in -w, -d,-m
The new cron format will use L, to represent Last day of the month, or last week day of the month.
Hence we now support:
- -w day of the week . valid values are , 0 → 6 where 0 is Sunday , 1 is Monday etc AND
0L→6L, where 0L means last Sunday of the month, and 1L means the last Monday of the month, etc
It is an error to overlay, i.e. cron -w 0,1,2,1L,2L,3L 23:00 will throw an exception - -d day of the month, valid values are in range 0-31,L Extended so that we now use 'L' to mean the last day of the month
- -m month valid values are in range 0-12
cron -w 0,1L 23:00 # run every Sunday(0) and *last* Monday(1L) of the month at 23pm cron -w 0L,1L,2L,3L,4L,5L,6L 10:00 # run on the last Monday,Tuesday..Saturday,Sunday of the month at 10 am cron -d 1,L 23:00 # Run on the first and last of the month at 23pm
The cron Late attribute can also be combined: Remember we *AND* across -w, -d, -m or *OR* for each element in -w, -d,-m
cron -w 4L -d L 10:00 # run on the last Thursday(4L) of the month *AND Last of day of the month, this only occurs 3 times in a year in 2019 cron -w 0,1L -m 1 10:00 # run every Sunday and last Monday of the month, in January