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.
This commit is contained in:
parent
4c1536d5f1
commit
38e8087d55
19
ps/output.c
19
ps/output.c
@ -1240,6 +1240,24 @@ fail:
|
|||||||
outbuf[1] = '\0';
|
outbuf[1] = '\0';
|
||||||
return 1;
|
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
|
#endif
|
||||||
/****************** FLASK & seLinux security stuff **********************/
|
/****************** FLASK & seLinux security stuff **********************/
|
||||||
// move the bulk of this to libproc sometime
|
// 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_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_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_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
|
#endif
|
||||||
{"sess", "SESS", pr_sess, sr_session, 5, 0, XXX, PO|PIDMAX|RIGHT},
|
{"sess", "SESS", pr_sess, sr_session, 5, 0, XXX, PO|PIDMAX|RIGHT},
|
||||||
{"session", "SESS", pr_sess, sr_session, 5, 0, LNX, PO|PIDMAX|RIGHT},
|
{"session", "SESS", pr_sess, sr_session, 5, 0, LNX, PO|PIDMAX|RIGHT},
|
||||||
|
4
ps/ps.1
4
ps/ps.1
@ -1505,6 +1505,10 @@ sd_unit UNIT T{
|
|||||||
displays systemd unit which a process belongs to.
|
displays systemd unit which a process belongs to.
|
||||||
T}
|
T}
|
||||||
|
|
||||||
|
sd_uunit UUNIT T{
|
||||||
|
displays systemd user unit which a process belongs to.
|
||||||
|
T}
|
||||||
|
|
||||||
sess SESS T{
|
sess SESS T{
|
||||||
session ID or, equivalently, the process ID of the session leader. (alias
|
session ID or, equivalently, the process ID of the session leader. (alias
|
||||||
.BR session , \ sid ).
|
.BR session , \ sid ).
|
||||||
|
Loading…
Reference in New Issue
Block a user