Blame


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