[systemd-devel] EnvironmentFile generated during ExecStartPre phase

Lennart Poettering lennart at poettering.net
Wed Oct 31 17:34:54 PDT 2012


On Wed, 31.10.12 14:28, Honza Horak (hhorak at redhat.com) wrote:

> Hi systemd hackers,
> 
> I'm wondering when exactly EnvironmentFile is read during service
> start.

Shortly before process execution (which is actually documented in
systemd.exec(5)).

Process execution means that it will be reloaded on each ExecXYZ= directive.

> My use case is the following: the service should be started with
> some environment variables defined, but the variable values are not
> static, but rather dynamically generated using some script. This
> could be solved by using EnvironmentFile=-/var/run/myservice, while
> this file would be generated in
> ExecStartPre=/usr/libexec/myservice-gen-env.
> 
> I did some quick testing and it seems EnvironmentFile is read before
> *every* ExecStart*. Is this something I can rely on?

I don't think that pressing things into EnvironmentFile= in this case is
necessarily a good idea. It's OK to wrap things in a shell script if the
daemon code internally is not sufficient to set up the execution
environment. Make sure to ultimately use "exec" to start the real binary
from such a script (rather than have it running as a subprocess). 

Lennart

-- 
Lennart Poettering - Red Hat, Inc.


More information about the systemd-devel mailing list