Habe das gerade mal getestet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/perl
use strict;
use warnings;
my $run_time = time;
my $duration = 48; # Stunden
my $interval = 0,
my ($cnt, $the_time);
my @interval = (2, 4, 8, 10); # Minuten
my $sub = sub {
my $cnt = shift;
open FILE, "> AbsolutePath/log_file.dat" or die $!;
print FILE $cnt . "\n";
close FILE;
};
$sub->(1);
while ((time - $run_time) <= ($duration * 3600)) {
$the_time = (time - (stat("AbsolutePath/log_file.dat"))[9]);
$the_time < $interval
? do {
sleep(($interval - $the_time));
next;
}
: do {
# für diesen Zweck sollte
do "AbsolutePath/cgi-bin/the_script.pl" or die $!;
# ausreichend sein - wenn nicht dann mit fork() oder system() arbeiten
$interval = (shift(@interval) * 60);
push @interval, ($interval / 60);
$sub->($cnt++);
}
}
ist nicht das 'gelbe vom Ei' aber es scheint zu funktionieren.
Edit: mit the_script.pl ist das auszuführende Programm gemeint\n\n
<!--EDIT|Dieter|1090488494-->