#! /bin/sh ######################################################################## # # /u/sonmi/bin/qaclean # # is supposed to clean up after a "hanging" QA # # 1) see if there is a lockfile # if yes: # 1a) kill the process of the lockfile and if possible it's children # 1b) rm the lockfile # 2) kill selfservers # 3) clean up old tmp files # ######################################################################## if [ -z "$TMP" ] then if [ -z "$TEMP" ] then TMP="/tmp" else TMP=$TEMP fi fi if [ ! -w "$TMP" ] then echo "Can't write to tmp directory $TMP - exiting" echo "Can't write to tmp directory $TMP - exiting" >&2 exit 1 fi ########################### Ps ######################################### # platform specific ps ######################################################################## Ps() { if [ `uname -s` = "SunOS" ] then /usr/5bin/ps -e else ps -e fi } Kill() { if [ "$1" = "$$" ] then return fi echo "Killing PID $1" kill $1 sleep 1 kill -9 $1 2>/dev/null } ########################### kill_by_name ################################ # like killall, only without permissionproblems, kills the process whose # name is given as parameter ######################################################################## kill_by_name() { echo "Killing all $1" for PID in `Ps | grep "$1" | grep -v grep | \ sed -e "s/^[ ]*//g" -e "s/[ ].*//"` do Kill $PID done } kill_the_rest() { i=0 while [ $i -lt $1 ] do kill_by_name nssqa kill_by_name selfserv kill_by_name strsclnt kill_by_name all.sh kill_by_name sdr.sh kill_by_name ssl.sh kill_by_name smime.sh i=`expr $i + 1` done } nt_warning() { os_name=`uname -s` case $os_name in CYGWIN*|WIN*|Win*) echo echo echo echo "Another Windows problem... If you have not already done so" echo "after this script completes, please reboot, and log in as" echo "user svbld again" echo echo echo ;; esac } nt_warning case $1 in -all) for w in tommy booboo kentuckyderby galileo shame axilla columbus \ smarch charm hp64 biggayal orville kwyjibo hbombaix raven \ jordan hornet phaedrus louie box dbldog huey washer dryer \ shabadoo trex bummer compaqtor jellyfish sjsu do echo $w ping $w && rsh $w '/u/sonmi/bin/qaclean' done ;; ?*) rsh $1 '/u/sonmi/bin/qaclean' exit ;; esac uname -a echo if [ -f ${TMP}/nssqa.* ] then echo "nssqa seems to be running ${TMP}/nssqa.*" #cat ${TMP}/nssqa.* NSSQA_PID=`ls ${TMP}/nssqa.* | sed -e 's/[^.]*\.//'` Kill $NSSQA_PID rm ${TMP}/nssqa.* fi kill_the_rest 3 ls -l ${TMP}/nsstmp.* rm ${TMP}/nsstmp.* 2>/dev/null rm ${TMP}/certutilout.* 2>/dev/null rm ${TMP}/Pk12* nt_warning