14
Systemd Timer units (discuss.tchncs.de)

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?

you are viewing a single comment's thread
view the rest of the comments
[-] nous@programming.dev 5 points 2 days ago* (last edited 2 days ago)

Note that you can use systemctl list-timers to see all active timers including when they will next run and when they last ran. This is very useful for seeing if you have set things up correctly.

There are multiple ways to do this as well. You can do

OnCalendar=Sun 03:00
Persistent=true

To run every Sunday at 3am. And will run immediately when activated if the last time was skipped due to the system being off. Think that is the closest to your cron job.

You can also

OnCalendar=weekly
Persistent=true

If you don't care when it will run. This is equivalent to Mon *-*-* 00:00:00.

[-] DeltaWingDragon@sh.itjust.works 1 points 2 days ago

Why does it say "Sun" if it runs on Saturday?

[-] nous@programming.dev 1 points 2 days ago

Typo on my part.

load more comments (1 replies)
this post was submitted on 04 Feb 2026
14 points (93.8% liked)

Linux Questions

3653 readers
10 users here now

Linux questions Rules (in addition of the Lemmy.zip rules)

Tips for giving and receiving help

Any rule violations will result in disciplinary actions

founded 2 years ago
MODERATORS