Написание сценария, который принимает PID в качестве аргумента и выводит PID всех своих ВЕДУЩИХ и внуков

Здравствуйте, я пытаюсь написать сценарий, который принимает аргумент PID и печатает всех внуков и внуков PID, а не детей. пример:

$ printthem 3545
3546
3548
3666

Что я пытался сделать:

ps --ppid $1

Но он не дает мне ID. Также я где-то читал о pstree, но не совсем уверен, как использовать его должным образом для достижения моей цели. Мы будем очень благодарны за любые указания. Спасибо !

1
задан 8 August 2021 в 18:37

1 ответ

Вот проект метаязыка (не реализован, не протестирован, предполагается, что не работает). Фактическое кодирование оставлено в качестве упражнения для студента.

В bashскрипте (начинающемся с #!/bin/bash):

Определите функцию ppid, принимающую PID в качестве параметра и возвращающую родителя PID.

Определите функцию children, принимающую PID в качестве параметра и возвращающую список ("pid pid pid pid ", обратите внимание на пробел в конце) PID, у которых параметр PID является родителем. Проверьте ВСЕ PID в системе, используя функцию ppid.

startPID=$1
childlist="$(children $startPID)"
gchildlist=""
ggchildlist=""
for kid in $childlist ; do
    gchildlist="$gchildlist $(children $kid)"
done
for kid in $gchildlist ; do
    ggchildlist="$ggchildlist $(children $kid)"
done
echo "Grand :  $gchildlist"
echo "Ggrand: $ggchildlist"
1
ответ дан 20 August 2021 в 10:28

Другие вопросы по тегам:

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