I am trying to create some systemd units that are supposed to start scripts at certain intervals. With Cron, I used an expression like 0 3 */7 * * to start a job every 7 days at 3 a.m. That worked great. With OnCalendar, I have no idea how to implement “every 7 days”. Or can I use OnUnitActiveSec here? Additional problem: The computer is not always on at the specified time. The job should therefore be repeated as soon as the computer is available again. I have set Persistent=true for this purpose. However, I suspect that OnUnitActiveSec is reset every time I restart the computer. Or does OnUnitActiveSec refer to the time when the unit was activated with systemctl enabled test.timer?


OnCalendar is calendar-based, not interval-based.
Use a monotonic timer with
OnUnitActiveSec=7dplusPersistent=true. This is not quite the same as your cron, because it can drift the day of ghe weak.And no, it does not reset just because you reboot.
Shifting the day of the week is totally fine, since i only care about days between the job executions. Many thx, then i try my luck with this.