diff options
author | Lukas Nykryn <lnykryn@redhat.com> | 2013-04-22 12:56:02 +0200 |
---|---|---|
committer | Lukas Nykryn <lnykryn@redhat.com> | 2013-04-24 09:24:44 +0200 |
commit | 38e8087d5580d870d5960f75670ab5c4f482d366 (patch) | |
tree | 03b7a2722867ae4e274115ce76a12d6c73d57ad2 | |
parent | 4c1536d5f1a1bdab72b2b751a466c6e3868ed00b (diff) | |
download | procps-ng-38e8087d5580d870d5960f75670ab5c4f482d366.tar.gz |
ps: possibility to display systemd user unit for a process
Library systemd-login offers possibility to display
name of systemd user unit for specific pid. Note that not all
processes are part of a user unit.
This patch adds output option "sd_uunit" which will
show name of user unit or "-", when process does not belong
to any user unit. This is similar to "sd_unit" but applies
to user units instead of system units.
To maintain compatibility with non-systemd systems,
procps must be configured with --with-systemd option
to enable this option.
-rw-r--r-- | ps/output.c | 19 | ||||
-rw-r--r-- | ps/ps.1 | 4 |
2 files changed, 23 insertions, 0 deletions
diff --git a/ps/output.c b/ps/output.c index 771d6ff..4ccc6c3 100644 --- a/ps/output.c +++ b/ps/output.c @@ -1240,6 +1240,24 @@ fail: outbuf[1] = '\0'; return 1; } + +static int pr_sd_uunit(char *restrict const outbuf, const proc_t *restrict const pp){ + int r; + size_t len; + char *unit; + + r = sd_pid_get_user_unit(pp->tgid, &unit); + if(r<0) goto fail; + len = snprintf(outbuf, COLWID, "%s", unit); + free(unit); + return len; + +fail: + outbuf[0] = '-'; + outbuf[1] = '\0'; + return 1; +} + #endif /****************** FLASK & seLinux security stuff **********************/ // move the bulk of this to libproc sometime @@ -1572,6 +1590,7 @@ static const format_struct format_array[] = { {"sd_ouid", "OWNER", pr_sd_ouid, sr_nop, 5, 0, LNX, ET|LEFT}, {"sd_session","SESSION", pr_sd_session, sr_nop, 11, 0, LNX, ET|LEFT}, {"sd_unit", "UNIT", pr_sd_unit, sr_nop, 31, 0, LNX, ET|LEFT}, +{"sd_uunit", "UUNIT", pr_sd_uunit, sr_nop, 31, 0, LNX, ET|LEFT}, #endif {"sess", "SESS", pr_sess, sr_session, 5, 0, XXX, PO|PIDMAX|RIGHT}, {"session", "SESS", pr_sess, sr_session, 5, 0, LNX, PO|PIDMAX|RIGHT}, @@ -1505,6 +1505,10 @@ sd_unit UNIT T{ displays systemd unit which a process belongs to. T} +sd_uunit UUNIT T{ +displays systemd user unit which a process belongs to. +T} + sess SESS T{ session ID or, equivalently, the process ID of the session leader. (alias .BR session , \ sid ). |