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";
}
}
[^] # Re: LOGs !!!
Posté par philz . En réponse au journal Arret total du disque dur. Évalué à 3.
#!/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"; } }