Changeset 9
- Timestamp:
- 11/26/07 22:05:21 (1 year ago)
- Files:
-
- sys_alive.conf (modified) (2 diffs)
- sys_alive.pl (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
sys_alive.conf
r3 r9 63 63 ); 64 64 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 65 72 # liste des alertes (commenter la ligne pour pas d'alerte) 66 73 %seuil_alertes = ( … … 95 102 # (pour mettre les process qui correspondent à la liste ci-dessus mais à garder) 96 103 @process_to_keep = ( 104 'sys_alive', # on ne kill pas sys_alive ;) 97 105 '^script_long\.cgi$', # ^ en debut de script, \ avant un point et $ en fin 98 106 ); sys_alive.pl
r8 r9 1 1 #!/usr/bin/perl 2 2 ############################################################### 3 # sys_alive.pl v1.5 #3 # sys_alive.pl v1.5.2 # 4 4 ############################################################### 5 5 # Programme de surveillance de serveur web sous Linux # … … 28 28 ############################################################### 29 29 # Historique : # 30 # v 1.5.2: 2007-11-26 : meilleure gestion du brute stop # 31 # et on ne kill pas sys_alive !! # 30 32 # v 1.5.1: 2007-11-21 : mode "demon" utilisable en tant que # 31 33 # script de démarrage (/etc/init.d) # … … 112 114 113 115 # variables globales 114 my $version = '1.5. 1';116 my $version = '1.5.2'; 115 117 my $arg = lc(shift(@ARGV)); 116 118 if (!$main::logfile) { $main::logfile = $main::rep_log.'/sys_alive.log'; } … … 282 284 Execute($main::demons_stop{$demon}); 283 285 # 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 294 298 } else { 295 299 WriteLog("Alerte de niveau 2 : impossible de stopper $demon car il n'est pas lancé");
