I need it to run every, say, 14 days. And at a specified hour (say, 4am). Is this possible with systemd?
A maneira mais fácil de obter aproximadamente a cada 14 dias é fazer isso duas vezes por mês.
[Install]
WantedBy=default.target
[Unit]
Description=Every fortnight.
[Timer]
OnCalendar=*-*-1,15 4:00:00
Unit=whatever.service
Essa sintaxe é explicada em man systemd.timer
; *-*-1,15
é o primeiro e o décimo quinto dia de todos os meses de cada ano.
Se você quisesse experimentar exatamente a cada 14 dias a partir do início do serviço:
[Timer]
OnActiveSec=14d
Mas há uma pegadinha aqui: acho que você teria que ter o sistema o tempo todo. Existe uma opção Persistent
para ter "a hora em que a unidade de serviço foi ativada pela última vez ... armazenada no disco", mas de acordo com a página man "essa configuração só afeta os timers configurados com OnCalendar".