[systemd-devel] Why is systemd-run --scope synchronous?

Lennart Poettering lennart at poettering.net
Mon Feb 5 13:59:23 UTC 2018


On Fr, 02.02.18 19:00, worz (worz at tuta.io) wrote:

> Hello, I was wondering why systemd-run --scope needs to be
> synchronous, it would be nice if someone could explain what happens
> under the hood, and what prevents it from just putting the process
> in the scope, and maybe just call the Abandon() method on the slice
> object's org.freedesktop.systemd1.Scope interface, when for example
> it is used in combination with --user, the scope is under
> user at 1000.service, so it should be cleaned up as soon as the service
> manager goes away? Note that there's not a specific usecase to cover
> here, I am just interested in knowing why it isn't the other way.

Hmm, I am not sure what you precisely mean by "synchronous" in this
context?

Is this about the bus calls being issued synchronously? We do that so
that at the time the user-specified command is executed we know for
sure that the resource limits and other things are in effect on it. If
we'd asynchronously register the scope and would already execute the
user's command, then these resource limits would only be applied
asynchronously, i.e. at some later point too, which is generally not
what is intended.

Or are you using the word "synchronous" in the context of foreground
vs. background? I.e. you want your process to be forked into the
background? That's actually done by default by systemd-run when you
don't use "--scope", where the executed process is moved into into the
background as a service.

Note that "systemd-run --scope" is little more than an
execve()-wrapper: if you want the whole thing to be running as a
shell managed background process, then suffix the line in "&" like you
would normally do too, when you don't use "systemd-run"...

But then again, I am not sure what you actually are looking for so
maybe my answers above completely miss the point...

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list