diff options
-rwxr-xr-x | bin/kill | 6 | ||||
-rwxr-xr-x | bin/ps | 72 | ||||
-rwxr-xr-x | bin/psu | 23 | ||||
-rwxr-xr-x | bin/slay | 6 |
4 files changed, 107 insertions, 0 deletions
diff --git a/bin/kill b/bin/kill new file mode 100755 index 00000000..d0723c50 --- /dev/null +++ b/bin/kill @@ -0,0 +1,6 @@ +#!/bin/sh + +for i +do + psu | awk '$NF ~ /^('$i')$/ {printf("/bin/kill %d # %s\n", $2, $0);}' +done @@ -0,0 +1,72 @@ +#!/bin/sh + +I_WANT_A_BROKEN_PS=yes +export I_WANT_A_BROKEN_PS +all=no +if [ "x$1" = "x-a" ] +then + all=yes +fi +export all + +cat >/tmp/awk.xxx$$ <<'!' +BEGIN{ + state["D"] = "Spinwait"; + state["I"] = "Idle"; + state["J"] = "Jail"; + state["R"] = "Ready"; + state["S"] = "Sleep"; + state["T"] = "Stopped"; + state["Z"] = "Zombie"; + state["W"] = "Fault"; + state["X"] = "Moribund"; +} + +function statestr(s) +{ + t = state[substr(s, 1, 1)]; + if(t == "") + return s; + return t; +} + +# rsc 36706 starttime 0:00.17 1076 Is+ -bash (bash) +{ + i=1 + user=$i; i++ + pid=$i; i++ + start=$i; i++ + if(start ~ /^[A-Z][a-z][a-z]$/){ + start = start "-" $i; i++ + } + cputime=$i; i++ + mem=$i; i++ + stat=$i; i++ + cmd=$i; i++ + if(ENVIRON["all"] == "yes"){ + for(; i<=NF; i++) + cmd = cmd " " $i; + }else{ + sub(/.*\//, "", cmd); + sub(/:$/, "", cmd); + sub(/^-/, "", cmd); + s = " " cmd; + } + sub(/\.[0-9][0-9]$/, "", cputime); # drop .hundredths of second + if(cputime ~ /..:..:../){ # convert hh:mm:ss into mm:ss + split(cputime, a, ":"); + cputime = sprintf("%d:%02d", a[1]*60+a[2], a[3]); + } + if(start ~ /..:..:../){ # drop :ss + sub(/:..$/, "", start); + } + printf("%-8s %11d %8s %8s %8dK %-8s %s\n", + user, pid, start, cputime, mem, statestr(stat), cmd); +} +! + +/bin/ps -axww -o 'user,pid,start,time,vsz,stat,command' | sed 1d | + awk -f /tmp/awk.xxx$$ | sort +1 -n + +rm -f /tmp/awk.xxx$$ + diff --git a/bin/psu b/bin/psu new file mode 100755 index 00000000..da6d8d45 --- /dev/null +++ b/bin/psu @@ -0,0 +1,23 @@ +#!/bin/sh + +flag='' +if [ "x$1" = "x-a" ] +then + flag=-a + shift +fi + +user=`whoami` +case $# in +0) + user=`whoami` + ;; +1) + user=$1 + ;; +*) + echo 'usage: psu [-a] [user]' 1>&2 + exit 1 +esac + +ps $flag | grep "^$user " diff --git a/bin/slay b/bin/slay new file mode 100755 index 00000000..0028e0c8 --- /dev/null +++ b/bin/slay @@ -0,0 +1,6 @@ +#!/bin/sh + +for i +do + psu | awk '$NF ~ /^('$i')$/ {printf("/bin/kill -9 %d # %s\n", $2, $0);}' +done |