diff --git a/files/kill-rogue-jobs b/files/kill-rogue-jobs index c6df0b4..d23282f 100644 --- a/files/kill-rogue-jobs +++ b/files/kill-rogue-jobs @@ -3,7 +3,6 @@ # TODO: # - print nagios friendly output into a file # - kill rsession processes older than N days -# set -e set -o pipefail @@ -23,31 +22,31 @@ OUT_DIR=$( mktemp -d -t kill-rogue-jobs.XXXXXXXXXX ) USER_PROCS_LIST=$OUT_DIR/proclist USER_PROCS_PARENTS=$OUT_DIR/parents -trap "eval logger '$CMD_NAME: trap intercepted, exiting.' ; cleanup" SIGHUP SIGINT SIGTERM +trap 'eval logger "$CMD_NAME: trap intercepted, exiting." ; cleanup' SIGHUP SIGINT SIGTERM function cleanup() { - rm -fr $OUT_DIR + rm -fr "$OUT_DIR" } function find_rogue_processes() { eval logger '$CMD_NAME: find_rogue_processes for user $USER_N' - ps -edaf | grep rsession | grep -v grep | grep ${USER_N} | awk '{ print $3 }' | uniq > $USER_PROCS_PARENTS - ps -edaf | grep rsession | grep -v grep | grep ${USER_N} | awk '{ print $2 }' | uniq > $USER_PROCS_LIST + ps -edaf | grep rsession | grep -v grep | grep "${USER_N}" | awk '{ print $3 }' | uniq > "$USER_PROCS_PARENTS" + pgrep -U "${USER_N}" rsession > "$USER_PROCS_LIST" for parent in $( cat $USER_PROCS_PARENTS ) ; do - grep -v $parent $USER_PROCS_LIST > $USER_PROCS_LIST.tmp - mv $USER_PROCS_LIST.tmp $USER_PROCS_LIST + grep -v "$parent" "$USER_PROCS_LIST" > $USER_PROCS_LIST.tmp + mv $USER_PROCS_LIST.tmp "$USER_PROCS_LIST" done - USER_PROCS_TO_KILL=$( cat $USER_PROCS_LIST ) + USER_PROCS_TO_KILL=$( cat "$USER_PROCS_LIST" ) } function exterminate() { eval logger '$CMD_NAME: exterminate killing user $USER_N processes' - for pid in $( echo $USER_PROCS_TO_KILL ) ; do - kill -15 $pid + for pid in $( echo "$USER_PROCS_TO_KILL" ) ; do + kill -15 "$pid" done } -NUM_CPUS=$( grep processor /proc/cpuinfo | wc -l ) +NUM_CPUS=$( grep -c processor /proc/cpuinfo ) ALLOWED_THREADS=$(( $NUM_CPUS - 1 )) TOTAL_MEM=$( grep MemTotal /proc/meminfo | awk '{ print $2 }' ) ALLOWED_USED_MEM=$(( $TOTAL_MEM - $SPARE_MEM )) @@ -69,6 +68,7 @@ for USER_N in $( echo $USERS_SESSIONS ) ; do fi done +cleanup trap cleanup EXIT exit 0