[systemd-devel] clarification on daemon-reload

Alexandre Detiste alexandre.detiste at gmail.com
Sun May 17 23:35:07 PDT 2015


Le lundi 18 mai 2015, 07:51:18 Igor Bukanov a écrit :
> What I would like to know is what is the exact behavior of systemctl
> daemon-reload. I am writing a service that creates/modifies other
> units by placing files under /run and I would like to know what are
> the limitations. In my case I cannot use a systemd.generator as the
> service depends on a mounted directory.

You could have a generator that first create a one-shot .service
if it's directory is not mounted at boot.

This one-shot .service looks like that:
| [Unit]
| RequiresMountsFor=/directory
| After=.... 
|
| [Service]
| Type=oneshot
| ExecStart=/bin/sh -c "/usr/bin/systemctl daemon-reload ; /usr/bin/systemctl try-restart your-service"

At it's second run (when called by daemon-reload), the generator does the right thing.

The /bin-sh -c "..." is needed to encapsulate the try-restart;
if it's not there, as this .service file doesn't exist anymore; the try-restart is never run.

It's ugly, but it works reliably.

Alexandre Detiste
 


More information about the systemd-devel mailing list