Am Wed, 25 Feb 2015 07:01:59 -0500
schrieb Rich Freeman <ri...@gentoo.org>:

> On Wed, Feb 25, 2015 at 2:50 AM, Marc Joliet <mar...@gmx.de> wrote:
> > Am Tue, 24 Feb 2015 16:44:59 -0500
> > schrieb Rich Freeman <ri...@gentoo.org>:
> >
> >> > === Timers ===
> >> >
> >> > Can a systemd timer depend on a mount point such that it waits until the 
> >> > mount
> >> > point exists before running?  Or will it fail after a timeout?  I want to
> >> > research this myself, but haven't gotten around to it yet.
> >>
> >> So, timer units are units, and units can have dependencies, and mounts
> >> can be dependencies since mounts are units.  However, if you set the
> >> dependency on the timer itself, then the timer won't start running
> >> until the mount exists.  You probably want the depencency to be on the
> >> service started by the timer (so the timer is watching the clock, but
> >> the service won't start without the mount).
> >
> > Wait, so the timer won't start watching the clock until its dependencies are
> > met (i.e, the mount point appears)?  Is that what you mean?  Because that 
> > might
> > be more in line with what I want (though I'm not sure yet).
> 
> If you set the dependency on the timer, then the timer doesn't start
> watching the clock until they're met.  If you set the dependency on
> the service started by the timer then it will watch the clock but not
> launch the service if the dependency isn't met.  You can set the
> dependency in either or both places.  The timer and the service are
> both units.

OK, I think I got it.

> >
> >> If you set a
> >> Requires=foo.mount and After=foo.mount, then the service shouldn't run
> >> unless foo.mount is available.  I suspect systemd will attempt to
> >> mount the filesystem when it runs the service, and you'll get units in
> >> the failed state if that doesn't work.
> >>
> >> However, I haven't tested any of this.  I suspect it wouldn't take
> >> much to work this out.  I have a mount dependency in one of my
> >> services.  Just look at the mount units in /run/systemd/generator for
> >> the name of the mount unit systemd is creating from fstab.
> >
> > Right, so IIUC, I would have a oneshot service that does the backup, and 
> > the timer
> > runs that, and of course the timer can depend on the mount point.  And if 
> > the
> > mount point doesn't exist, then the service started by the timer will fail.
> >
> > What I would prefer to have is a timer that only runs if *both* the time 
> > *and*
> > mount conditions are met.  Skimming the man page, this does not seem 
> > possible.
> > I suppose it would be nice if timers learned "conditions" on which they 
> > should
> > wait in addition to the time condition, but maybe that's outside the scope 
> > of
> > systemd?
> 
> I think if you just set the dependency on the service you'll get the
> behavior you desire.  Systemd will try to mount the backup filesystem,
> and if that fails it won't run the backup.
> 
> You can set conditions on units as well, like only running if they're
> on AC power or on amd64 or to run one unit the first time you start a
> service and a different unit every other time.  Some of that was
> designed to implement some of the stateless system features they're
> adding to systemd.

Right, I'll have a look at them.

Thanks
-- 
Marc Joliet
--
"People who think they know everything really annoy those of us who know we
don't" - Bjarne Stroustrup

Attachment: pgpPve3zrzTTz.pgp
Description: Digitale Signatur von OpenPGP

Reply via email to