Hi! On " Try adding Persistent=yes, it should make it behave as you expect (you still need to start the unit manually at least once to initially trigger the timer).": You talk about the service unit, and not about the timer unit, right? Systemd.timer says (about Persistent): " Note that this setting only has an effect on timers configured with OnCalendar=." So it shouldn't make a difference if the docs are right. Regards, Ulrich > -----Original Message----- > From: Andrei Borzenkov <arvidjaar@xxxxxxxxx> > Sent: Monday, July 29, 2024 9:21 AM > To: Windl, Ulrich <u.windl@xxxxxx> > Cc: systemd-devel@xxxxxxxxxxxxxxxxxxxxx > Subject: [EXT] Re: "OnUnitInactiveSec Timer not firing" issue > > On Mon, Jul 29, 2024 at 9:33 AM Windl, Ulrich <u.windl@xxxxxx> wrote: > > > > Hi! > > > > > > > > I tried to use my first systemd timer, but failed: Either I don’t understand it > correctly, or there is a bug in systemd (228 of SLES12 SP5): > > > > (See also https://unix.stackexchange.com/q/779714/320598) > > > > > > > > It seems it’s not enough to “enable” the timer, but also “start” it (well, it > may seem logical from the systemd point of view, but from a cron user’s > point of view enabling should be enough) > > > > That is how all systemd units work, it is not specific to timers. > > > Furthermore it seems to be necessary to run the service unit itself, too > (assuming it must be enabled also, right?) > > > > Well, OnUnitInactiveSec is relative to when the unit was last > deactivated. To deactivate a unit it needs to be active first. > > > But the biggest thing is that systemd seems to lose the point-in-time of the > last activation, so the timer won’t fire any more (e.g. after package upgrade > when everything enabled would be re-enabled, and everything started > would be re-started). > > > > But most of all if the system reboots, the timer also won’t fire any more. > > > > I am not sure about package updates, but if your unit is not started > on boot by some other means, it will not be started by your timer > (because the unit will never be deactivated in the first place). > > Try adding Persistent=yes, it should make it behave as you expect (you > still need to start the unit manually at least once to initially > trigger the timer). > > Or as described in `man systemd.timer` try adding OnBootSec condition > to start unit after reboot. > > > > > > > So can anybody explain how things should work? > > > > > > > > My expectation was that an OnUnitInactiveSec timer would fire > immediately if it never ran, and then every day from that. > > > > It is not how it is described in the documentation. "Was never active" > is not the same as "was deactivated" which by definition implies that > the unit *was* active.