this post was submitted on 04 Feb 2026
17 points (94.7% liked)

Linux Questions

3731 readers
61 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
 

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
[–] MoLoPoLY@discuss.tchncs.de 1 points 1 day ago* (last edited 1 day ago)

Sorry, i have to ask again. I actually thought I had solved the problem. However, today I discovered that the jobs are overdue and have not been started for several days. When I display the timers with systemctl --user list-timers, I see that the NEXT column is empty::

NEXT LEFT LAST                         PASSED UNIT                  ACTIVATES              
-       - Sun 2026-02-01 20:01:48 CET       - backup.timer  backup.service

Since there is no NEXT date, the timer/service will probably not be restarted. The timer unit looks like this:

[Unit]
Description="Backup to remote"

[Timer]
OnUnitActiveSec=3d
Persistent=true

[Install]
WantedBy=default.target

As you can see, I am well over the 3 days. When I call systemctl --user status backup.timer, I get:

● backup.timer - "Backup to remote"
     Loaded: loaded (/home/username/.config/systemd/user/backup.timer; enabled; preset: enabled)
    Drop-In: /home/username/.config/systemd/user/backup.timer.d
     Active: active (elapsed) since Fri 2026-02-13 16:53:31 CET; 7min ago
 Invocation: 95ae3860c50a454b98078fc2ce3eb3c5
    Trigger: n/a
   Triggers: ● backup.service

To me, this looks perfectly "normal." The only thing that puzzles me is the Active line. Why is the current date (Fri 2026-02-13 16:53:31 CET) set there and not the date on which the job last ran (Sun 2026-02-01 20:01:48 CET)? The NEXT column fills up again when I start systemctl --user restart backup.service. The job is then executed immediately and the column is filled. However, after rebooting the laptop, the column is empty again and the job is no longer started at the given intervals.