Hi,

$INVOCATION_ID is quite a reliable source for this.
I do not what if there are other behavior changes apart from forking you
want to do but it is usually better to do those at a finer resolution than
just a big check for systemd. First and foremost there are also other
service managers which make forking unnecessary, the same hold for running
your program in a container (e.g. Docker) - a cli flag might be a better
option. If you want to use journald, check for it specifically using the
socket or $JOURNAL_STREAM, for socket activation check $LISTEN_FDS, etc.

Cheers, Nils

On Mon, Jun 30, 2025, 13:30 Stef Bon <stef...@gmail.com> wrote:

> Hi,
>
> it's important for a program to detect it has been started by systemd.
> For example it does not have to fork since it has already been forked.
>
> I've written a test script, which calls env, and there are a few
> unique environment variables which are an indication it has been
> started by systemd: SYSTEMD_EXEC_PID and INVOCATION_ID.
>
> Is it a good way to test these environment vars (to detect started by
> systemd) or is there a better way?
>
> S. Bon
>

Reply via email to