La lista de grupos se encuentra en Groups
en /proc/
/status
; por ejemplo,
$ grep '^Groups' /proc/$$/status
Groups: 4 24 27 30 46 110 115 116 1000
El grupo principal se proporciona en Gid
:
$ grep '^Gid' /proc/$$/status
Gid: 1000 1000 1000 1000
ps
también es capaz de mostrar los grupos de un proceso, como indican las otras respuestas.
Para la identificación de grupo efectiva, la identificación de grupo real y las identificaciones de grupo suplementarias (como se usa para el control de acceso):
ps -o gid,rgid,supgid -p "$pid"
gid
y rgid
son bastante portátiles, supgid
menos (los 3 estarían disponibles con el ps
de procps como se encuentran normalmente en los sistemas basados en Linux).
group
, rgroup
y supgrp
se puede usar para traducir identificadores de grupo a nombres de grupo, pero tenga en cuenta que para los identificadores de grupo que tienen varios nombres de grupo correspondientes, solo se mostrará uno de ellos (igual que para ls -l
contra ls -n
o cualquier cosa que trate con nombres de usuarios o grupos basados en ID).
Para la identificación del grupo de procesos (como se usa para el control de trabajo de terminal):
ps -o pgid -p "$pid"
Para almacenarlo en una variable:
pgid=$(($(ps -o pgid= -p "$pid")))
Usando ps
:
$ ps -o group,supgrp $$
GROUP SUPGRP
muru adm,cdrom,sudo,dip,www-data,plugdev,lpadmin,mlocate,sambashare,lxd,libvirtd,docker,muru
Desde man ps
, las columnas de salida utilizadas para -o
:
egid EGID effective group ID number of the process as a
decimal integer. (alias gid).
egroup EGROUP effective group ID of the process. This will be
the textual group ID, if it can be obtained and
the field width permits, or a decimal
representation otherwise. (alias group).
gid GID see egid. (alias egid).
group GROUP see egroup. (alias egroup).
supgid SUPGID group ids of supplementary groups, if any. See
getgroups(2).
supgrp SUPGRP group names of supplementary groups, if any. See
getgroups(2).