#!/bin/sh # # "zap foo" kills all processes which have foo in their ps # listing. Normally you are asked about each process individually, # but zap -f kills all matching processes silently (DANGEROUS!) # # Eric Myers , 5 May 1994 # Department of Physics and Astronomy, Vassar College # @(#) $Id: zap,v 2.1 2001/08/08 15:12:11 myers Exp myers $ ###################################################################### FORCE=N FLAGS= ARG= while [ $# != 0 ] do case "$1" in -f) FORCE=Y ;; -V) set -x ;; # verbose -*) FLAGS="$FLAGS $1" ;; *) ARG="$1" ;; esac shift done if [ -z "$ARG" ]; then echo "usage: zap name" exit 1 fi BSDNL=""; SYSVNL="" ; PSP="" case `uname` in Linux) BSDNL="-n" PS="ps auxw" PSP=" -f " ;; HP-UX) SYSVNL="\c" PS="ps -ef" PSP=" -f -p " ;; *) PS="ps -aux" PSP=" -f " echo DEFAULT ;; esac # -- Get the list of PID's LIST=`$PS | grep $FLAGS "$ARG" | grep -v zap | \ grep -v grep |tail +1 | awk '{print $2}'` # -- confirm the kill for each PID for PROCID in $LIST do if [ "$FORCE" = "N" ]; then if ! ps $PSP ${PROCID} >/dev/null then continue else ps $PSP ${PROCID} echo $BSDNL "Kill ${PROCID}? [ynq] $SYSVNL" read ANS if [ -z "$ANS" ]; then ANS="y" fi case $ANS in y) kill -9 $PROCID ;; n) ;; q) exit 1 ;; *) echo "Huh?" ;; esac fi else kill -9 $PROCID fi done