Blob


1 #!/bin/sh
3 I_WANT_A_BROKEN_PS=yes
4 export I_WANT_A_BROKEN_PS
5 all=no
6 if [ "x$1" = "x-a" ]
7 then
8 all=yes
9 fi
10 export all
12 cat >/tmp/awk.xxx$$ <<'!'
13 BEGIN{
14 state["D"] = "Spinwait";
15 state["I"] = "Idle";
16 state["J"] = "Jail";
17 state["R"] = "Ready";
18 state["O"] = "Running";
19 state["S"] = "Sleep";
20 state["T"] = "Stopped";
21 state["Z"] = "Zombie";
22 state["W"] = "Fault";
23 state["X"] = "Moribund";
24 }
26 function statestr(s)
27 {
28 t = state[substr(s, 1, 1)];
29 if(t == "")
30 return s;
31 return t;
32 }
34 # rsc 36706 starttime 0:00.17 1076 Is+ -bash (bash)
35 {
36 i=1
37 user=$i; i++
38 pid=$i; i++
39 start=$i; i++
40 if(start ~ /^[A-Z][a-z][a-z]$/){
41 start = start "-" $i; i++
42 }
43 cputime=$i; i++
44 mem=$i; i++
45 stat=$i; i++
46 cmd=$i; i++
47 if(ENVIRON["all"] == "yes"){
48 for(; i<=NF; i++)
49 cmd = cmd " " $i;
50 }else{
51 sub(/.*\//, "", cmd);
52 sub(/:$/, "", cmd);
53 sub(/^-/, "", cmd);
54 s = " " cmd;
55 }
56 sub(/\.[0-9][0-9]$/, "", cputime); # drop .hundredths of second
57 if(cputime ~ /..:..:../){ # convert hh:mm:ss into mm:ss
58 split(cputime, a, ":");
59 cputime = sprintf("%d:%02d", a[1]*60+a[2], a[3]);
60 }
61 if(start ~ /..:..:../){ # drop :ss
62 sub(/:..$/, "", start);
63 }
64 printf("%-8s %11d %8s %8s %8dK %-8s %s\n",
65 user, pid, start, cputime, mem, statestr(stat), cmd);
66 }
67 !
69 case "${SYSNAME:-`uname`}" in
70 SunOS)
71 /bin/ps -aA -o 'user,pid,stime,time,vsz,s,args' | sed 1d |
72 nawk -f /tmp/awk.xxx$$ | sort -n +1
73 ;;
74 *)
75 /bin/ps -axww -o 'user,pid,start,time,vsz,stat,command' | sed 1d |
76 awk -f /tmp/awk.xxx$$ | sort -n +1
77 ;;
78 esac
80 rm -f /tmp/awk.xxx$$