#!/bin/bash remove() { local PIDFILE=$1 rm -f $PIDFILE } killandremove() { local PIDFILE=$1 kill -9 `cat $PIDFILE` >/dev/null 2>&1 remove $PIDFILE } cat_newline() { local PIDFILE=$1 cat $PIDFILE echo "" } witheach() { local CMDPREFIX=$* local PIDFILE while read PIDFILE; do $CMDPREFIX $PIDFILE done } allpidfiles() { ls ~/.arb_tmp/tmp/arb_pids_${USER}_* 2>&1 | grep -v 'No such file' } # ---------------------------------------- session() { local PIDFILE=~/.arb_tmp/tmp/arb_pids_${USER}_${ARB_PID} if [ -f $PIDFILE ]; then echo $PIDFILE | witheach killandremove else echo "No processes listed for ARB_PID=$ARB_PID" fi } old() { allpidfiles | witheach remove } targets() { allpidfiles | witheach cat_newline } killall() { allpidfiles | witheach killandremove } # ---------------------------------------- ACTION=$1 if [ -z "$ACTION" ]; then echo "Usage: arb_clean [action]" echo "Known actions are:" echo " session kill all processes running with current ARB_PID" echo " old delete old pid-files from /tmp (dont do this while arb is running)" echo " targets show process ids of processes, that will be killed by action 'killall'" echo " killall kill all (current or former) arb processes" echo " CAUTION: may act completely wrong and kill various running non-ARB-processes!" else if [ "$ACTION" == "session" -o "$ACTION" == "old" -o "$ACTION" == "targets" -o "$ACTION" == "killall" ]; then $ACTION fi fi