#!/bin/rc @{ for ( file in /proc/[0-9]*/status){ cat $file >[2] /dev/null && echo '' }} | awk ' BEGIN{ ofs = FS; FS="|"; while (getline < "/adm/keys.who") really[$1] = $3; while (getline < "/adm/netkeys.who") really[$1] = $3; FS=ofs; "date -n" | getline now; } { nproc[$2]++; utime[$2] += $4; stime[$2] += $5; if ($6 == "" || $6 > rtime[$2]) rtime[$2] = $6; if($2 != prev) memsz[$2] += $10; prev = $2; } END { for (u in nproc) printf("%-12s %3d %10s %10s %6.1fMb %8s %s\n", u, nproc[u], s2ms(utime[u]/1000), s2ms(stime[u]/1000), memsz[u]/1024.0, when(rtime[u]/1000), really[u]); } function s2ms(n){ return sprintf("%d:%02d", n/60, n%60); } function when(s, d, h, m){ d = int(s/86400); s -= d*86400; h = int(s/3600); s -= h*3600; m = int(s/60); s -= m*60; if (d != 0) return sprintf("%dd", d); else return sprintf("%dh", h); } '