Para o seu primeiro exemplo, oito horas, sete dias antes da última terça-feira do mês, eu faria isso:
0 8 * * 2 [[ $(date +%m) -eq $(date -d +7days +%m) ]] && [[ $(date +%m) -ne $(date -d +14days +%m) ]] && myscript
O que acontece é às 8h todas as terças-feiras ( 0 8 * * 2
) e depois diz "se o mês daqui a 7 dias for o mesmo que este mês" (isto é, não é o último > Terça-feira do mês) e "se o mês daqui a 14 dias não for igual a este mês" (ou seja, esta é a segunda última terça-feira do mês), execute myscript
.
Isso pode ser tecnicamente mais eficiente - por exemplo, você sabe que a segunda-última terça-feira do mês não pode ser o primeiro dia do mês - mas isso dificulta ainda mais Compreendo. :) Além disso, dependendo de exatamente qual cron do shell é executado, e assim por diante, pode haver alguma necessidade de cotação ( +%m
pode precisar ser "+%m"
) ou talvez seja necessário escapar do sinal de porcentagem (ou seja, +%m
pode precisar para ser +\%m
).
A generalização desse truque para outros dias e combinações avançadas é deixada como um exercício para o leitor.