Cron Expression: Last Friday of the Month
Standard cron can't say “last Friday.” The reliable way is to run every Friday and keep only the one where adding 7 days lands in the next month. Here is the correct expression and gate.
Why there is no direct expression
Vixie cron matches calendar fields and has no L (last) operator. “Last Friday” depends on how many Fridays a month has (4 or 5), which varies, so it must be computed at run time.
The correct pattern
Run every Friday at 17:00 and gate on whether next week is still this month:
0 17 * * 5 in cron, then: [ "$(date -d '+7 days' +%m)" != "$(date +%m)" ] || exit 0. If Friday + 7 days is a different month, this is the last Friday — otherwise skip.
The 0 17 * * 5L trap
Some schedulers (Quartz) accept 5L for “last Friday,” but Vixie/cronie on Linux do not — it errors or is ignored. Do not rely on L in a Linux crontab; use the script gate above.
Quartz equivalent
0 0 17 ? * 6L gives the last Friday at 17:00 directly in Quartz (day 6 = Friday there).
FAQ
How do I run a cron job on the last Friday of the month?
Run every Friday (0 17 * * 5) and gate the script with [ "$(date -d '+7 days' +%m)" != "$(date +%m)" ] || exit 0, which only passes when next Friday is in a new month.
Does Linux cron support 5L for last Friday?
No. The L operator is a Quartz feature; Vixie/cronie on Linux do not support it. Use the +7-days date check instead.
What is the Quartz version?
0 0 17 ? * 6L selects the last Friday at 17:00 directly.