Skip to content
  • Eelco Dolstra's avatar
    journal: set the _SYSTEMD_UNIT field for messages from terminated processes · 62bca2c6
    Eelco Dolstra authored
    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.
    62bca2c6