É possível obter o ID do grupo de processos de / proc?

16

Em " link "Eu vejo todas as respostas mencionando ps e nenhuma mencionando /proc .

"ps" parece não ser muito portátil (versões do Android e do Busybox esperam argumentos diferentes), e eu quero poder listar pids com pgids com ferramentas simples e portáteis.

Em /proc/.../status, vejo Tgid: (ID do grupo de threads), Gid: (id de grupo para segurança, não para agrupar processos juntos), mas não PGid: ...

Quais são as outras maneiras (não usando ps ) de obter pgid do pid?

    
por Vi. 27.05.2014 / 17:32

1 resposta

24

Você pode ver o campo na saída de /proc/[pid]/stat .

$ ps -ejH | grep firefox
 3043  2683  2683 ?        00:00:21   firefox

$ < /proc/3043/stat sed -n '$s/.*) [^ ]* [^ ]* \([^ ]*\).*//p'
2683

Em man proc :

/proc/[pid]/stat
              Status information about the process.  This is used by ps(1).  It is defined in /usr/src/linux/fs/proc/array.c.

              The fields, in order, with their proper scanf(3) format specifiers, are:

              pid %d      The process ID.

              comm %s     The filename of the executable, in parentheses.  This is visible whether or not the executable is swapped out.

              state %c    One character from the string "RSDZTW" where R is running, S is sleeping in an interruptible wait, D is waiting in
                          uninterruptible disk sleep, Z is zombie, T is traced or stopped (on a signal), and W is paging.

              ppid %d     The PID of the parent.

              pgrp %d     The process group ID of the process.

              session %d  The session ID of the process.

Note que você não pode usar:

awk '{print $5}'

Porque esse arquivo não é uma lista separada em branco. O segundo campo (o nome do processo pode conter espaços em branco ou até mesmo caracteres de nova linha). Por exemplo, a maioria dos segmentos de firefox normalmente tem caracteres de espaço em seus nomes.

Então, você precisa imprimir o terceiro campo após a última ocorrência de um caractere ) .

    
por 27.05.2014 / 17:49