Вот что я хочу сделать: я хочу получить древовидный список процессов из пс (как когда ты делаешь ps auxwwf
), но только процессов, которые либо принадлежат мне, либо являются предками процессов, принадлежащих мне. Так что если у меня есть трепать процесс вниз по дереву, и у него есть предки, принадлежащие root, я хочу увидеть этих корневых предков в дополнение к тем, которые у меня есть. я делаю не хотите видеть любые деревья процессов, которые не содержат процессов, принадлежащих мне.
Есть ли способ сделать это с помощью псобычные параметры, или мне нужно написать сценарий для анализа вывода?
Пытаться ps -ejH
который отображает дерево процессов, основанное на связях отца и сына.
редактировать
Только видеть ваш процессы
ps -fjH -u myname
Это будет не очень быстро, но вроде как помогает:
# Bash, GNU ps
pidchain ()
{
if [[ -z $1 ]]; then
return;
fi;
if (( $1 == 0 )); then
return;
else
echo "$1";
pidchain $(ps -p $1 o ppid=);
fi
}
pids () {
ps o pid= -u $1 |
while read pid
do
pidchain $pid
done |
sort -nu
}
ps uxwwf -p $(pids username)
Это зависит от вашей ОС, но на основе заданной вами команды ps я думаю, что это может сработать:
ps --user dirtside -uxxf
Я использую итерацию вместо рекурсии (не беспокойтесь, что вы переполните свой стек):