#!/bin/sh # $Id: roguehunter,v 1.13 2017/07/10 19:17:22 fulford Exp $ # $Source: /src/bfl/usr/local/etc/RCS/roguehunter,v $ # $Revision: 1.13 $ # Author C W Fulford. # Copyright 2016 (c) C W Fulford. # Licensed for public use under the LGPL, . # For assistance contact fulford@fulford.net 0793 572 8612 ######################################################################## cmd=`basename $0` ver=`echo "$Id: roguehunter,v 1.13 2017/07/10 19:17:22 fulford Exp $"|awk '{print $3,$4,$5}'` syntax="$cmd [-c <configfile>] [-d] [-v]|-V" while [ $# -gt 0 ] ;do case $1 in -d) set -x;debug=0;shift;; -m) max=$2;shift 2;; -v) verbose=:;shift;; -V) echo "$cmd $Revision: 1.13 $ $Date: 2017/07/10 19:17:22 $"|awk '{print $1,$3,$6}';exit;; *) echo $syntax >&2;exit;; esac done ignore="init|nfsd|nmbd|sysproc|_upsd" log=/var/log/$cmd`date +%w` max=${max:-50} [ $verbose ] && echo "$cmd: max = $max" >&2 date=`date "+%b %d"` ls -l $log |grep -q "$date" || >$log if [ "$debug" ];then echo -n "logfile = `ls -l $log`" fi rogues=/tmp/$cmd$$ ;touch $rogues # NB can't use -ef as UnixWare has irregular number of fields ps -e |egrep -v "$ignore"| awk 'NR > 1 { split($5,a,":") if(a[1] >= '$max') { if ($6 ~ /smn12/) print $1 >> "'$rogues'" else if($6 ~ /nfsd/) nfs=true else print "check",$6,$1,a[1] >>"'$log'" } }' n=`cat $rogues | wc -l` if [ $n -gt 0 ];then cat $rogues | while read pid ;do ps -ef | # get the parent process if its not init and add to # the rouges list awk '$2 == '$pid' && $3 > 1 { print $3 >>"'$rogues'" }' done fi [ "$verbose" ] &&{ cat $rogues >&2 } cat $rogues | while read pid ;do [ $verbose ] && echo $pid >&2 ps -eo "pid ppid comm" | awk '{ if($1=='$pid' && (($3 ~ /smn12/)||($2==1 && $3 ~ /ksh/))){ printf("%s %i %s ","killing",$1,$3) >>"'$log'" # No time functions available in this awk cmd="/bin/ksh >> '$log'" print "date" | (cmd) close(cmd) cmd="xargs kill" print $1 |(cmd) close(cmd) #print $1 } }' done rm $rogues ###################################################################### # This program is free software: you can redistribute it and or # # modify it under the terms of the Lesser GNU General Public License # # as published by the Free Software Foundation, either version 3 of # # the License, or (at your option) any later version. # # # # This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU General Public License for more details. # # # # A copy of the Lesser GNU General Public License and the GNU # # General Public License is available at # # <http://www.gnu.org/licenses/>. # ######################################################################
Copyright
© 2003-2017
Clifford W Fulford.
Fulford Consulting Ltd.
Regd. Co. 4250037 in England & Wales.
Regd. office 162, Edward Rd. Nottingham NG2 5GF, England, UK.
Related web sites: City Linux | Flare Support | West Bridgford | Fulford Portal | Joan Mary Fulford (Nottingham Writer) | Fulford Gallery | Amharic Interpreter | Arabic Interpreter | Tigrinya Interpreter
The layout and associated style sheets for this page are taken from the World Wide Web Consortium and used here under the W3C software licence.