PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` #!/usr/local/bin/perl # # Modules # use DBI; use Proc::Daemon; # # Global vars # $procsfile = '/root/temp_proc_list'; $limit = '20'; my $db = 'DBI:mysql:monitoring:74.200.74.237'; my $username = 'backupstatus'; my $pass = 'dAtIebAmAikata'; $myname = `hostname`; chomp($myname); # # Do not edit below this line, unless specifically instructed, thank you. # sub monitor { open PROCSLIST, "> $procsfile" or die $!; $procslist=`ps -elf |awk {'print \$3'}|sort|uniq -c|sort -n`; chomp($proclist); print PROCSLIST "$procslist"; close PROCSLIST; open PROCSLIST, "$procsfile" or die $!; while (){ my ($num,$usr) = split(" ",$_); chomp($num); chomp($usr); if ( $num > $limit) { if ( $usr =~ /root/ or $usr =~ /nobody/ or $usr =~ /mysql/ or $usr =~ /mailnull/){ next; } else { print "$num $usr \n"; $userlog = `ps -elf |grep $usr`; chomp($userlog); $when = `date`; chomp($when); open USERLOG, ">> /home/$usr/etc/tmd_proc_log"; print USERLOG "====== At $when we have detected $num processes by $usr ======\n"; print USERLOG " \n"; print USERLOG "$userlog" or die $!; print USERLOG " \n"; close USERLOG; system("ukill $usr"); my $dbh = DBI->connect( $db, $username, $pass ); my $sql =qq(INSERT INTO `monitoring`.`process_killer`(`id`, `username`, `procs`, `srv`) VALUES (NULL, '$usr', '$num', "$myname");); my $sth = $dbh->prepare($sql); $sth->execute or die "SQL error: $DBI:errstr\n"; $dbh->disconnect; } } } close PROCSLIST; } $0='tmd_process_logger'; Proc::Daemon::Init; while(1){ monitor; sleep(1); }