#! /bin/awk -f # 2004 (GPL) Manfred Wassmann http://www.berlinos.de/ function pr(l,pfx) { while(i=index(l," ")) { p=substr(l,1,i)+0; l=substr(l,i+1); if(S[p]&&!pfx)continue; f="/proc/"p+0"/cmdline"; c="["N[p]"]";getline c1){S[$1]=1;C[$4]=C[$4]?C[$4]" "$1:$1}#is child? gsub("^\(|\)$","",$2);N[$1]=$2;#name X[$1]=$3;#exec status T[$1]=$7;#tty dev no A[$1]=$22/100;#rel start time V[$1]=$23/1024;#virt size R[$1]=$24*4;#res set size } END{ printf"%5s %-4s %-6s %5s %5s %7s %s\n", "PID","TTY","STAT","VSZ","RSS","RSTART","CMD"; l=substr(l,2); pr(l,""); }