• [^] # Re: LOGs !!!

    Posté par . En réponse au journal Arret total du disque dur. Évalué à 3.

    A une époque j'avais écrit le petit script ci dessous pour trouver le coupable (depuis j'ai acheté un disque dur de portable pour dormir tranquille ...) :
    #!/usr/bin/perl
    use strict;
    use IO::File;
    my $command = "/sbin/hdparm -C /dev/hda";
    my $timer = 0;
    my $timerActive = 0;
    my $dateActive = "";
    my $state = getState();
    autoflush STDOUT;
    print "Starting state is $state\n";
    while (sleep 1) {
     my $newstate = &getState();
     if ($state ne $newstate) {
     if ($newstate eq "active") {
     &writeLog();
     } else {
     &reset();
     }
     $state = $newstate;
     }
     $timer++;
    }
    sub writeLog {
     return unless $dateActive;
     my $date = `date +"%F %T"`;
     chomp $date;
     my $files = `find / -mmin -3 -xdev`;
     $files =~ s/\n/ /g;
     $files = substr $files, 0, 120;
     {
     printf "[$dateActive] Active during %5d seconds\n", $timerActive;
     printf "[$date] Standby during %5d seconds", $timer;
     print ", wake-up by $files\n";
     }
     $timer = 0;
    }
    sub reset {
     $timerActive = $timer;
     $dateActive = `date +"%F %T"`;
     chomp $dateActive;
     $timer = 0;
    }
    sub getState {
     my $state = `$command`;
     if ($state =~ m/standby/) {
     return "standby";
     } elsif ($state =~ m/active\/idle/) {
     return "active";
     } else {
     die "Erreur : $state";
     }
    }