#!/usr/local/bin/perl # Process manager # Цель: # Обеспечить проверку что все необходимые процесы идут # Перезапустить их если умерли ! use lib qw(/export/home/demiurg/dvp/backup/lib); use strict; use File::Basename; use Time::localtime; use dbautil; #--------------------------------------------------------------------------- #daily procedure body sub FindMissingProcess { my ($i,$retval, $output, $cmd, $ok_str, $cnt); $i = 1; while ( defined ($dbautil::p->{ps}->{'ps'.$i}) ) { $cmd = $dbautil::p->{ps}->{'ps'.$i}; ($retval, $output ) = &RunCmd ($cmd, "bla-bla-bla"); $cnt = $output =~ tr/\n//; if ( $cnt < $dbautil::p->{ps}->{'ps'.$i.'_min'} ) { h_send_mail ( { 'From' => $dbautil::ora_sid, 'To' => $dbautil::p->{'dba_mail'} , 'Subject' => $dbautil::p->{'ps'}->{'ps_failed'} }, $dbautil::p->{ps}->{'ps'.$i}.$output); $cmd = $dbautil::p->{ps}->{'ps'.$i.'_action'}; system ( $dbautil::p->{ps}->{'ps'.$i.'_action'} ); } $i++; } } ReadConfigFile ($ARGV[0]); FindMissingProcess;