projects
/
chksht.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add check throttling in runcheckdir
[chksht.git]
/
runcheckdir
diff --git
a/runcheckdir
b/runcheckdir
index
7dbfa2f
..
6b5bcca
100755
(executable)
--- a/
runcheckdir
+++ b/
runcheckdir
@@
-30,7
+30,7
@@
sub do_command {
}
}
-my ($checkcommand, %on);
+my ($checkcommand,
$every,
%on);
$on{success} = [];
$on{failure} = [];
$on{change} = [];
$on{success} = [];
$on{failure} = [];
$on{change} = [];
@@
-52,6
+52,8
@@
while (<CONFIG>) {
} else {
print "Unknown event in 'on', $dir/check line $.\n";
}
} else {
print "Unknown event in 'on', $dir/check line $.\n";
}
+ } elsif ($command eq 'every') {
+ $every = $words[0];
} else {
print "Unknown command '$command', $dir/check line $.\n";
}
} else {
print "Unknown command '$command', $dir/check line $.\n";
}
@@
-68,23
+70,30
@@
unless (@{$on{failure}} || @{$on{success}} || @{$on{change}}) {
open STATUS, "$dir/checkstatus";
chomp(my $oldstatus = <STATUS>);
open STATUS, "$dir/checkstatus";
chomp(my $oldstatus = <STATUS>);
+my $oldtime = (stat(STATUS))[9];
close STATUS;
close STATUS;
+my $td = time() - $oldtime;
+if ($td < $every) {
+ # Not time to recheck yet
+ #print "Not rechecking; ", $every - $td, " seconds to go.\n";
+ exit $oldstatus;
+}
+
open CHECK, '-|', $checkcommand;
$status = <CHECK>;
$details = join('', <CHECK>);
close CHECK;
my $exitstatus = $? >> 8;
open CHECK, '-|', $checkcommand;
$status = <CHECK>;
$details = join('', <CHECK>);
close CHECK;
my $exitstatus = $? >> 8;
-my $command;
if ($exitstatus == 0 && $oldstatus != 0) {
if ($exitstatus == 0 && $oldstatus != 0) {
- do_command($
command) foreach $command
@{$on{success}};
+ do_command($
_) foreach
@{$on{success}};
}
if ($exitstatus != 0 && $oldstatus == 0) {
}
if ($exitstatus != 0 && $oldstatus == 0) {
- do_command($
command) foreach $command
@{$on{failure}};
+ do_command($
_) foreach
@{$on{failure}};
}
if ($exitstatus != $oldstatus) {
}
if ($exitstatus != $oldstatus) {
- do_command($
command) foreach $command
@{$on{change}};
+ do_command($
_) foreach
@{$on{change}};
}
open STATUS, ">$dir/checkstatus";
}
open STATUS, ">$dir/checkstatus";
@@
-92,3
+101,5
@@
print STATUS "$exitstatus\n";
print STATUS "$status\n";
print STATUS "$details\n";
close STATUS;
print STATUS "$status\n";
print STATUS "$details\n";
close STATUS;
+
+exit $exitstatus;