#!/bin/csh # csh script to emulate killall # by peter bartoli 8/19/98 # check number of arguments if ($#argv < 1) then echo "usage: killall [-signal] keyword" exit 1 endif if ($#argv > 2) then echo "usage: killall [-signal] keyword" exit 1 endif # protect our results umask 077 # initialize binary locations; avoid using paths set ps='/usr/bin/ps' set grep='/usr/bin/egrep' set awk='/usr/bin/awk' set kill='/usr/bin/kill' set rm='/usr/bin/rm' set sort='/usr/bin/sort' set uniq='/usr/bin/uniq' set sed='/usr/bin/sed' # process with one command line argument if ($#argv == 1) then set key = "${1}" set signal = "-TERM" endif # process with two command line arguments if ($#argv == 2) then set key = "${2}" set signal = "${1}" endif # find matching processes $ps -auxww | $grep "/$key\ |\ $key\ " | $awk '{ print $2 }' > /var/tmp/kill.$$ $ps -auxww | $grep "/$key\ |\ $key\ " | $awk '{ print $2 }' >> /var/tmp/kill.$$ $ps -auxww | $awk '{ print $2, $11, $12 }' | $grep $key | $awk '{ print $1 }' \ >> /var/tmp/kill.$$ $ps -auxww | $awk '{ print $2, $11, $12 }' | $grep $key | $awk '{ print $1 }' \ >> /var/tmp/kill.$$ set list = ` $sed /$$/d /var/tmp/kill.$$ | $sort | $uniq -d ` # if none, report result if ($#list == 0) then echo "no processes matching $key" exit 1 endif # send signal and remove temp file $kill $signal $list $rm -f /var/tmp/kill.$$ exit 0 # end of script