там какой-либо путь состоит в том, чтобы знать, кто дети определенного процесса? например, те дети, которые их родительский идентификатор является нечто?
Вы ищете pstree
команда. pstree
отдельно перечислит все процессы в древовидной форме (как lsblk
, делает). Можно использовать эти -p
флаг для перечисления PIDs также, и -s
для показа родительского процесса также:
$ pstree -p 602
udisksd(602)-+-{cleanup}(607)
|-{gdbus}(605)
|-{gmain}(603)
`-{probing-thread}(606)
<час> А (вероятно), совместимый POSIX способ получить дочерний PIDs (что я упомянул в комментариях в другом месте):
ps -o ppid= -o pid= -A | awk '$1 == <some pid>{print $2}'
Это говорит ps
писать родительский PID и PID всех процессов (без заголовков), и затем использует awk
для наблюдения, какие строки имеют данный PID в первом поле (родительский PID), и печатает соответствующее второе поле (дочерний PID).
Другая опция, для использования Системный монитор (прибывает предварительно установленный). В СМ Строка меню отмечают опцию "Dependencies", при "Представлении", иметь визуальную обратную связь, показывая родителя и дочерний процесс (процессы) как шоу в снимке экрана ниже.
я предпочитаю CL (Командная строка) сам и предлагаю, что те, кто использует Linux в этом случае Ubuntu ежедневно, мудро инвестируют их время в изучение основных команд, по Приложениям GUI или по крайней мере в состоянии освоить обоих до известной степени!
Если Вы просто хотите видеть непосредственных детей процесса, PID которого 123
, можно использовать ps
опция команды --ppid
:
ps --ppid 123
можно объединить это с эти pidof
команда для получения детей процесса по имени т.е., учитывая процесс, названный foo
ps --ppid $(pidof foo)
Я не эксперт, но чтение вышеупомянутых ответов, мне казалось, что существует, вероятно, более прямой способ сделать это через proc файловую систему, например, для программируемого использования в сценарии, а не человекочитаемом дисплее. И действительно существует: для процесса с $mypid Идентификационного кода его дочерние процессы перечислены в
/proc/$mypid/task/$mypid/children
, например,
$ cat /proc/3123/task/3123/children
3131 3133
Точно так же можно получить идентификатор родительского процесса через запись "PPid" в, файле
/proc/$mypid/task/$mypid/status
например,
$ grep PPid /proc/3131/task/3131/status
PPid: 3123
$ grep PPid /proc/3131/task/3131/status | cut -f2
3123
, я не уверен, насколько портативный это вне систем Linux, все же.
если вы хотите увидеть только дочерние элементы первого уровня данного родительского процесса
id посмотрите в /proc/
.
Обратите внимание, что этот файл содержит pid дочерних процессов первого уровня. для всего дерева процессов сделайте это рекурсивно.
это https://lwn.net/Articles/475688/ содержит дополнительную информацию об этом.