GNU/Linux >> Tutoriales Linux >  >> Linux

¿Determinar en qué grupo(s) se encuentra un proceso en ejecución?

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).

Linux
  1. ¿Cómo determinar qué proceso está creando un archivo?

  2. ¿En qué shell me estoy ejecutando?

  3. ¿Cambiar el entorno de un proceso en ejecución?

  4. Linux:¿cómo identificar qué distribución de Linux se está ejecutando?

  5. ¿Iniciar un proceso en un Tty diferente?

Cómo enumerar los procesos en ejecución en Linux

Procesos corriendo

¿Qué proceso tiene Pid 0?

Cómo determinar qué proceso está escribiendo en el disco en Linux

¿Qué es un proceso ininterrumpido?

¿Cómo iniciar un proceso en su propio grupo de procesos?