Re: "semaphore" for .timer-triggered run

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fr, 02.08.19 13:24, Johannes Ernst (johannes.ernst@xxxxxxxxx) wrote:

> I have a oneshot .service (certbot) that is run by its .timer with:
>
> OnCalendar=daily
> RandomizedDelaySec=1day
>
> I also have a sometimes long-running script that may modify the same
> data. So the script and the oneshot service should never run at the
> same time.
>
> Is there a good systemd pattern for some kind of semaphore-like
> thing that will delay the execution of the oneshot service and try
> again when the script is done running?
>
> I could skip execution, but then I miss an entire day until the
> service is run again -- I’d prefer it if it tried again a few
> minutes later. Or I could poll for some flag before running the main
> part of the service. Wondering whether there something more
> systemd-native.

Maybe change the service program invoked by the timer unit to use file
locking of some kind early on. I mean, if you have shared data on disk
and want to synchronize access to it then a file lock is the concept
of choice really. If this is a proper program (i.e. not a shell
script) maybe just use a BSD file lock (flock(2)) on the top-level
directory you store your data in. If these are shell scripts you
should be able to use util-linux' flock tool, you could even prefix
your ExecStart= line with that if you want.

But no, systemd does not provide any mechanism to do file locking for
you.

Lennart

--
Lennart Poettering, Berlin
_______________________________________________
systemd-devel mailing list
systemd-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/systemd-devel




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux