[systemd-devel] How to chain services driven by a timer?

Brian Reichert reichert at numachi.com
Wed Apr 10 19:04:37 UTC 2024


On Wed, Apr 10, 2024 at 09:06:09AM -0600, Dan Nicholson wrote:
> On Wed, Apr 10, 2024 at 8:50???AM Brian Reichert <reichert at numachi.com> wrote:
> >
> > My current service file:
> >
> >   [Unit]
> >   Description=Activities after logrotation
> >
> >   Requires=logrotate.service
> >   Wants=logrotate.service
> >   After=logrotate.service
> >
> >   [Service]
> >   #Type=oneshot
> >   Type=simple
> >
> >   ExecStart=/usr/bin/logger 'XXX post log rotation'
> >
> >   [Install]
> >   WantedBy=timers.target
> 
> The critical part is WantedBy=logrotate.service. In other words, when
> logrotate.service is activated, you want it to also activate your
> service. Then After=logrotate.service above will ensure your service
> starts after it completes. The Requires and Wants above are
> conflicting. You only want one or the other, but I'd probably put it
> as Requires=logrotate.service. That way your unit won't start if
> logrotate.service fails.

Thanks to you and <grawity at gmail.com> for your advice. I think I've
correctly incorporated your suggestions, but I still can't seem to get
things to work.

Perhaps my method of testing is flawed.

My current service:

  [Unit]
  Description=Activities after logrotation
  
  Requires=logrotate.service
  
  [Service]
  Type=simple
  
  ExecStart=/usr/bin/logger 'XXX post log rotation'
  
  [Install]
  WantedBy=logrotate.service

I tried, variously, to no apparent effect:

  systemctl restart logrotate.timer

  systemctl start logrotate.service

How should I be testing this?

-- 
Brian Reichert				<reichert at numachi.com>
BSD admin/developer at large	


More information about the systemd-devel mailing list