[bcn.pm] cron email cada 10 minutos

Zeno zeno at timallen.org
Wed Jun 12 15:05:17 CDT 2002


Barcelona Perlmongers - http://barcelona.pm.org (list: barcelona-pm at pm.org)
posted by: Zeno <zeno at timallen.org> on Majordomo v.1.94.5
Angel Faus wrote:
>>Martin Archanco wrote:
>>El script lo tengo corriendo con cron , cada un minuto y cuando la
>>carga se supera me envia un mail cada 1 minuto ,, yo tengo que
>>hacer que se de cuenta que ya mando uno y que siga esperando hasta
>>cumplir los diez minutos...


> Podrías guardar en un archivo temporal el tiempo del último envío, y
> revisarlo antes de enviar el mail.

Me gusta la idea del fichero temporal, así evitas que haya un proceso de
Perl ejecutandose todo el rato--

#########################################
#!/usr/bin/perl
use strict;
use POSIX; # para función ctime()
my $temp_file = "temp_file"; # nombre de fichero temporal

# ¿existe el fichero temporal? si no, no hemos tenido un
# sobrecarga antes
if (!-e $temp_file) {
open TEMP,">temp_file"
or die "no puedo abrir $temp_file para escribir: $!";
print TEMP time();
send_warning();
} else {
open TEMP,"temp_file"
or die "no puedo abrir $temp_file para leer: $!";
my $last_time = <TEMP>;
close TEMP or die "no puedo cerrar $temp_file: $!";
chomp $last_time;
if ((time() - $last_time) > 600) {
send_warning();
$last_time = time();
open OUT,">$temp_file"
or die "no puedo abrir $temp_file para escribir: $!";
print OUT $last_time;
close OUT;
}
}

sub send_warning()
{
my $time = ctime(time());
# este código de p.651 Perl Cookbook
open (SENDMAIL, "|/usr/lib/sendmail -oi -t -odq")
or die "no puedo hacer fork de sendmail: $!";
print SENDMAIL << "EOF";
From: Support <tu\@email.com>
To:   Support <tu\@email.com>
Subject: Sobrecarga

Maquina sobrecargada a $time.....
EOF
close(SENDMAIL);
}
#########################################

Un saludo.
--
zeno
Barcelona Perlmongers - http://barcelona.pm.org (list: barcelona-pm at pm.org)
posted by: Zeno <zeno at timallen.org> on Majordomo v.1.94.5



More information about the Barcelona-pm mailing list