A solução mais simples é provavelmente usar um cronômetro que é executado todos os dias e verifica se amanhã é o primeiro dia do mês. Algo como:
mytimer.timer:
[Unit]
Description=run mytimer.service daily at 6am
[Timer]
OnCalendar=6:00
Persistent=true
[Install]
WantedBy=timers.target
mytimer.service:
[Unit]
Wants=mytimer.timer
Description=run on last day of month
[Service]
Type=oneshot
ExecStart=/bin/bash -c '[ $(date --date=tomorrow +%d) -eq 1 ] && \
/bin/myscript'
Para o último dia útil do mês, eu o calculo como: procure 3 dias no futuro e verifique se a data é a 3ª e o dia é de quinta a segunda inclusive, ou a data é a 1ª ou 2ª e o dia é segunda-feira. O teste bash equivalente usando data e% w para o dia da semana (0 = domingo) seria
[[ $(date --date=+3days +%d%w) =~ 03[45601]|011|021 ]]