tSome Plan 9 workalikes. - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 629864f582b3da6517aee2cac55c26cc832d65b6
 (DIR) parent 771ff2bc058ee7177828e8d2c01fbd9619933784
 (HTM) Author: rsc <devnull@localhost>
       Date:   Mon, 13 Oct 2003 18:25:28 +0000
       
       Some Plan 9 workalikes.
       
       Diffstat:
         A bin/kill                            |       6 ++++++
         A bin/ps                              |      72 +++++++++++++++++++++++++++++++
         A bin/psu                             |      23 +++++++++++++++++++++++
         A bin/slay                            |       6 ++++++
       
       4 files changed, 107 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/bin/kill b/bin/kill
       t@@ -0,0 +1,6 @@
       +#!/bin/sh
       +
       +for i
       +do
       +        psu | awk '$NF ~ /^('$i')$/ {printf("/bin/kill %d # %s\n", $2, $0);}'
       +done
 (DIR) diff --git a/bin/ps b/bin/ps
       t@@ -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$$
       +
 (DIR) diff --git a/bin/psu b/bin/psu
       t@@ -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 "
 (DIR) diff --git a/bin/slay b/bin/slay
       t@@ -0,0 +1,6 @@
       +#!/bin/sh
       +
       +for i
       +do
       +        psu | awk '$NF ~ /^('$i')$/ {printf("/bin/kill -9 %d # %s\n", $2, $0);}'
       +done