Когда скрипт запускается из командной строки, оболочка порождает подпроцесс для этого скрипта. Я хочу показать эту связь между процессом на уровне терминала и его дочерними элементами, используя ps
вывод в виде дерева.
Как я могу это сделать?
Что я пробовал до сих пор
файл: script.sh
#!/bin/bash
ps -f -p$1
Затем я вызываю скрипт из командной строки, передавая идентификатор процесса оболочки терминала:
$ ./script.sh $$
Что я хочу, это что-то вроде этого
- процесс оболочки верхнего уровня (терминала)
- ./script.sh
- процесс для
ps
самой команды
USER PID [..]
ubuntu 123 -bash
ubuntu 1234 \_ bash ./script.sh
ubuntu 12345 \_ ps auxf
что я получаю это:
PID TTY STAT TIME COMMAND
14492 pts/24 Ss 0:00 -bash
pstree
?pstree
и не смог добиться значимого результата, думаю,pstree $$
только что произвелbash--pstree
не совсем то, что я искал.ps
, так что еще вы ожидаете увидеть, кромеpstree
?pstree -p $$
? Или, если вы хотите больше из командной строки показать,pstree -pa $$
. Или, если вы хотите показать все родительские процессы, идущие вверхpstree -psa $$
.Ответы:
Пытаться
источник
$1
аргументов скрипту или использование$$
просмотра дерева, начинающегося с текущей оболочки ... Можете ли вы обновить свой ответ, включив информацию о том, как получить лес, начинающийся с конкретный процесс?Я нашел это после прочтения этого ответа суперпользователя , отметив этот комментарий
и экспериментировать
результат
источник
OUTPUT MODIFIERS: f ASCII-art process hierarchy (forest)
Вы можете использовать команду
ps f -g <PID>
и указать корневой процесс дляPID
:источник
Попробуй это:
источник