Isso não será muito rápido, mas parece fazer o truque:
# 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)