#! /bin/sh # WdBD 2005L zad 2 # robert.budzynski@fuw.edu.pl # ta wersja jest minimalnie wolniejsza # choć na oko wydawałoby się że mogła by być szybsza.. ps -ef | gawk ' { np[$1]++ } END{ for (u in np) { foo = "" (comm = ("getent passwd " u)) | getline foo close(comm) if (split(foo, pwrec, ":")!=7) np[u] = 0 gid[u] = pwrec[4] gname[pwrec[4]] = "" split(pwrec[5], temp, ",") gecos[u] = temp[1] } for (i in gname) { (comm = ("getent group " i)) | getline foo close(comm) split(foo, grec, ":") gname[i] = grec[1] } for (u in np) if (np[u]) printf "%8s:%30.30s, %10.10s:%4d\n", u, gecos[u], gname[gid[u]], np[u] } ' | sort -t: -k3 -n -r