/dev/null 2>&1 
then                    # BSD ps 
    DefPsArgs=aux 
else                    # SYSV ps 
    DefPsArgs=-ef 
fi 
Usage () { 
    echo "$PN - show top cpu processes, Version $VER (stv '94) 
usage: $PN [-PN=`basename "$0"`            # Program name 
VER=`echo '$Revision: 1.2 $' | cut -d' ' -f2` 
Tmp=${TMPDIR:-/tmp}/top$$        # Temporary file 
if [ -x /usr/ucb/ps ]     
then PS=/usr/ucb/ps 
else PS=ps 
fi 
if $PS aux >/dev/null 2>&1 
then                    # BSD ps 
    DefPsArgs=aux 
else                    # SYSV ps 
    DefPsArgs=-ef 
fi 
Usage () { 
    echo "$PN - show top cpu processes, Version $VER (stv '94) 
usage: $PN [-<ps_opt>] [lines [interval]] 
    ps_opt:    options for ps (default is $DefPsArgs) 
The default for the number of lines is 20, the default 
interval is 3 seconds." >&2 
    exit 1 
} 
while [ $# -gt 0 ] 
do 
    case "$1" in 
    --)    shift; break;; 
    -h)    Usage;; 
    -*)    PsArgs="$1";; 
    *)    break;;            # number of lines 
    esac 
    shift 
done 
: ${PsArgs:=${DefPsArgs}} 
Lines=${1:-20}                # Number of lines to display 
Interval=${2:-3}            # Time interval (in seconds) 
# Remove temporary file at exit or signal 
trap "rm -f $Tmp" 0 
trap "exit 1" 1 2 3 15 
while true 
do 
    # Temporary file is not necessary but faster 
    $PS $PsArgs > $Tmp 
    clear 
    head -$Lines $Tmp 
    sleep $Interval 
done