Use pgrep
:
pgrep -g 18322
De man pgrep
:
-g, --pgroup pgrp,...
Only match processes in the process group IDs listed. Process
group 0 is translated into pgrep's or pkill's own process group.
Como alternativa, você pode simplesmente analisar a ps
output de maneiras mais simples:
ps xh -o pgrp,pid | awk '$1==18322{print $2}'
Ou simplesmente simplifique sua abordagem Perl original (desnecessariamente complexa):
ps xh -o pgrp,pid | perl -lane 'print $F[1] if $F[0] eq 5592'
Ou apenas grep
:
ps xh -o pgrp,pid | grep -Po '\s*5592\s*\K.+'