blob: 7a8cd4e41b9974e68fa281bdbb450dcf4c0b7019 [file] [log] [blame]
rsc629864f2003-10-13 18:25:28 +00001#!/bin/sh
2
3I_WANT_A_BROKEN_PS=yes
4export I_WANT_A_BROKEN_PS
5all=no
6if [ "x$1" = "x-a" ]
7then
8 all=yes
9fi
10export all
11
12cat >/tmp/awk.xxx$$ <<'!'
13BEGIN{
14 state["D"] = "Spinwait";
15 state["I"] = "Idle";
16 state["J"] = "Jail";
17 state["R"] = "Ready";
rsccb274432004-03-25 23:03:22 +000018 state["O"] = "Running";
rsc629864f2003-10-13 18:25:28 +000019 state["S"] = "Sleep";
20 state["T"] = "Stopped";
21 state["Z"] = "Zombie";
22 state["W"] = "Fault";
23 state["X"] = "Moribund";
24}
25
rscc57a7372004-04-19 05:51:59 +000026function statestr(s, wchan)
rsc629864f2003-10-13 18:25:28 +000027{
rsc33514162005-01-04 21:14:58 +000028 if(wchan != s && wchan != "?" && wchan != "-")
rscc57a7372004-04-19 05:51:59 +000029 return wchan;
rsc629864f2003-10-13 18:25:28 +000030 t = state[substr(s, 1, 1)];
31 if(t == "")
32 return s;
33 return t;
34}
35
36# rsc 36706 starttime 0:00.17 1076 Is+ -bash (bash)
37{
38 i=1
39 user=$i; i++
40 pid=$i; i++
41 start=$i; i++
42 if(start ~ /^[A-Z][a-z][a-z]$/){
43 start = start "-" $i; i++
44 }
45 cputime=$i; i++
46 mem=$i; i++
47 stat=$i; i++
rscc57a7372004-04-19 05:51:59 +000048 wchan=$i; i++
rsc629864f2003-10-13 18:25:28 +000049 cmd=$i; i++
50 if(ENVIRON["all"] == "yes"){
51 for(; i<=NF; i++)
52 cmd = cmd " " $i;
53 }else{
54 sub(/.*\//, "", cmd);
55 sub(/:$/, "", cmd);
56 sub(/^-/, "", cmd);
57 s = " " cmd;
58 }
59 sub(/\.[0-9][0-9]$/, "", cputime); # drop .hundredths of second
60 if(cputime ~ /..:..:../){ # convert hh:mm:ss into mm:ss
61 split(cputime, a, ":");
62 cputime = sprintf("%d:%02d", a[1]*60+a[2], a[3]);
63 }
64 if(start ~ /..:..:../){ # drop :ss
65 sub(/:..$/, "", start);
66 }
67 printf("%-8s %11d %8s %8s %8dK %-8s %s\n",
rscc57a7372004-04-19 05:51:59 +000068 user, pid, start, cputime, mem, statestr(stat, wchan), cmd);
rsc629864f2003-10-13 18:25:28 +000069}
70!
71
rsccb274432004-03-25 23:03:22 +000072case "${SYSNAME:-`uname`}" in
73SunOS)
rsc33514162005-01-04 21:14:58 +000074 /bin/ps -aA -o 'user,pid,stime,time,rss,s,s,args' | sed 1d |
rsccb274432004-03-25 23:03:22 +000075 nawk -f /tmp/awk.xxx$$ | sort -n +1
76 ;;
77*)
rsc33514162005-01-04 21:14:58 +000078 /bin/ps -axww -o 'user,pid,start,time,rss,stat,wchan,command' | sed 1d |
rsccb274432004-03-25 23:03:22 +000079 awk -f /tmp/awk.xxx$$ | sort -n +1
80 ;;
81esac
rsc629864f2003-10-13 18:25:28 +000082
83rm -f /tmp/awk.xxx$$
84