Changeset 9

Show
Ignore:
Timestamp:
11/26/07 22:05:21 (3 years ago)
Author:
twidi
Message:

meilleure gestion du brute stop (via conf), et.. on ne kill pas sys_alive !

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sys_alive.conf

    r3 r9  
    6363); 
    6464 
     65# démons parmis ceux ci-dessus dont on va forcer l'arret tant qu'il existe 
     66# si jamais le premier arret n'a pas fonctionné 
     67# on indique le nombre de tentative 
     68%demons_brute_stop = ( 
     69        'httpd' => 10 
     70); 
     71 
    6572# liste des alertes (commenter la ligne pour pas d'alerte) 
    6673%seuil_alertes = ( 
     
    95102# (pour mettre les process qui correspondent à la liste ci-dessus mais à garder) 
    96103@process_to_keep = ( 
     104        'sys_alive', # on ne kill pas sys_alive ;) 
    97105        '^script_long\.cgi$',   # ^ en debut de script, \ avant un point et $ en fin 
    98106); 
  • sys_alive.pl

    r8 r9  
    11#!/usr/bin/perl 
    22############################################################### 
    3 #                  sys_alive.pl  v1.5                         # 
     3#                  sys_alive.pl  v1.5.2                       # 
    44############################################################### 
    55#    Programme de surveillance de serveur web sous Linux      # 
     
    2828############################################################### 
    2929# Historique :                                                # 
     30# v 1.5.2: 2007-11-26 : meilleure gestion du brute stop       # 
     31#                       et on ne kill pas sys_alive !!        # 
    3032# v 1.5.1: 2007-11-21 : mode "demon" utilisable en tant que   # 
    3133#                       script de démarrage (/etc/init.d)     # 
     
    112114 
    113115# variables globales 
    114 my $version = '1.5.1'; 
     116my $version = '1.5.2'; 
    115117my $arg = lc(shift(@ARGV)); 
    116118if (!$main::logfile) { $main::logfile = $main::rep_log.'/sys_alive.log'; } 
     
    282284                                                Execute($main::demons_stop{$demon}); 
    283285                                                # essais supplémentaires si encore des traces 
    284                                                 my $essai = 1; 
    285                                                 while ((my $top2 = `$term top b n 1`) =~ /\s$demon\s*$/m) { 
    286                                                         WriteLog("Trop d'essai pour forcer l'arrêt de $demon qui semble tourner encore"), last if $essai > 5; 
    287                                                         my @pids; map { push @pids, $1 if /^\s*(\d+).+\s$demon\s*$/} split(/\n/, $top2); 
    288                                                         if (@pids+0) { 
    289                                                                 WriteLog("Suite alerte de niveau 2 : force arrêt de $demon, essai $essai (kill @pids)"); 
    290                                                                 Execute('kill -9 '.join(' ', @pids)); 
    291                                                         } 
    292                                                         $essai++; 
    293                                                 } 
     286                                                if (my $max_brute = $main::demons_brute_stop{$demon}) { 
     287                                                        my $essai = 1; 
     288                                                        while ((my $top2 = `$term top b n 1`) =~ /\s$demon\s*$/m) { 
     289                                                                WriteLog("Trop d'essai pour forcer l'arrêt de $demon qui semble tourner encore"), last if $essai > $max_brute; 
     290                                                                my @pids; map { push @pids, $1 if /^\s*(\d+).+\s$demon\s*$/} split(/\n/, $top2); 
     291                                                                if (@pids+0) { 
     292                                                                        WriteLog("Suite alerte de niveau 2 : force arrêt de $demon, essai $essai (kill @pids)"); 
     293                                                                        Execute('kill -9 '.join(' ', @pids)); 
     294                                                                } 
     295                                                                $essai++; 
     296                                                        } # fin de while 
     297                                                } # fin de if max brute 
    294298                                        } else { 
    295299                                                WriteLog("Alerte de niveau 2 : impossible de stopper $demon car il n'est pas lancé");