Команда ps: вывести список процессов по идентификатору группы

Наконец-то я нашел ответ. Мне просто нужно указать полный путь к файлу fnames.txt в /path/to/my/fnames.txt, потому что я выполняю скрипт в другом каталоге.

#!/bin/sh
#
#
while read -r LINE
do
    find -name "$LINE"
done < /path/to/my/fnames.txt

Выход:

./SAMPLE_NIKE_856_20170703_80_20_304_234_897.dat
./SAMPLE_ADIDAS_856_20170702_56_98_123_245_609.dat
2
19.09.2019, 00:02
1 ответ

В Linux ps -gвыбирает процессы либо по группе , либо по сеансу , но не по группе процессов . Он обрабатывает аргументы как идентификаторы сеанса, если они состоят исключительно из цифр, и как имена групп в противном случае.

ps -g 130547перечисляет все процессы в сеансе с идентификатором 130547. Предположительно процесс 130547 не является лидером сеанса, и поэтому не существует процесса с идентификатором сеанса 130547.

Linux ps не имеет возможности фильтрации по группе процессов. Вы можете перечислить все процессы или все процессы в данном сеансе и отфильтровать их по полю pgid.

ps -g $(ps -p 130547 -o sid=) -o pid,ppid,pgid
ps -e -o pid,ppid,pgid | awk 'NR == 1 || $3 == 130547'
1
27.01.2020, 22:16

Теги

Похожие вопросы