[systemd-devel] [PATCH] journal: set the _SYSTEMD_UNIT field for messages from terminated processes

Lennart Poettering lennart at poettering.net
Thu Jun 21 15:21:25 PDT 2012


On Thu, 21.06.12 16:40, Eelco Dolstra (eelco.dolstra at logicblox.com) wrote:

> As described in
> 
>   https://bugs.freedesktop.org/show_bug.cgi?id=50184
> 
> the journal currently doesn't set fields such as _SYSTEMD_UNIT
> properly for messages coming from processes that have already
> terminated.  This means among other things that "systemctl status" may
> not show some of the output of services that wrote messages just
> before they exited.
> 
> This patch fixes this by having processes that log to the journal
> write their unit identifier to journald when the connection to
> /run/systemd/journal/stdout is opened.  Journald stores the unit ID
> and uses it to fill in _SYSTEMD_UNIT when it cannot be obtained
> normally (i.e. from the cgroup).  To prevent impersonating another
> unit, this information is only used when the caller is root.
> 
> This doesn't fix the general problem of getting metadata about
> messages from terminated processes (which requires some kernel
> support), but it allows "systemctl status" and similar queries to do
> the Right Thing for units that log via stdout/stderr.

In the long run we should get the kernel fixed to provide us with
something like SCM_CGROUPS, SCM_PROCINFO, SCM_AUDIT and so on to send
over cgroup membership data, comm/exec/argv[] and audit data.

However, I have merged this now, since the unit name is special enough
to get special treatment. Also we can drop this later again since it is
an internal protocol.

Thanks!

Lennart

-- 
Lennart Poettering - Red Hat, Inc.


More information about the systemd-devel mailing list