Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7542[/thread]

Timestamp Dateien abfragen

Leser: 1


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
leissi
 2005-12-14 15:11
#60895 #60895
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo,

nur eine Frage wie kann ich in einem Verzeichnis in dem jede Stunde eine neue Logdatei angelegt wird nachfragen , wenn ich um 7:30 abfrage das mir nur die Logdatei angegeben wird die max. nicht älter ist als eine Stunde??

Habe sowas ähnliches schon eingebaut aber weiss nicht wie ich dies dort ändern kann!

Beispiel:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 sub existsActBackup 
  {
      my ($file,$max_age) = @_;
      my $tmpValue = 0;
      #print LogDatei $tm;
      my $age = (time - (stat($file))[10]) / (60 * 60 * 24);# an dieser Stelle wird max. 24Stunden zurück abgefragt!
  if ($age < $max_age)
  {    
      $tmpValue = 1;
      print LogDatei "   " . $tm . "  Aktuelle Dateien vorhanden! \n";
      print LogDatei "file  stat($file)\n";
      #print LogDatei "file2 $file \n";
  }
  else
  {  
      $tmpValue = 0;
      #print LogDatei "Keine aktuellen Dateien vorhanden! \n";      
  }  
      return $tmpValue;
  }


Vielen Dank\n\n

<!--EDIT|esskar|1134566485-->
Crian
 2005-12-14 16:56
#60896 #60896
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Kannst du 24 nicht durch 24 teilen? Oder verstehe ich dich gerade völlig miss?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
esskar
 2005-12-14 17:00
#60897 #60897
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Crian,14.12.2005, 15:56]Kannst du 24 nicht durch 24 teilen? Oder verstehe ich dich gerade völlig miss?[/quote]
ja... momentan fragt er nur eine datei ab... er will die datei ja aber im verzeichnis finden...
leissi
 2005-12-14 17:09
#60898 #60898
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hi,

also nochmal in dem Verzeichnis wird jede Stunde eine neue Logdatei reingeschrieben. Ich möchte aber nur die Datei finden die in der letzten Stunde geschrieben wurde!

Gruss

leissi
nepos
 2005-12-14 17:52
#60899 #60899
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Naja, oben rechnest du doch schon 23 Stunden zurueck
Code: (dl )
60 * 60 * 24
, wo liegt das Problem, wenn du statt 24 Stunden dann nur eine haben willst?
leissi
 2005-12-14 17:56
#60900 #60900
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
uups Danke das heisst so dann 60*60*1 ???
sesth
 2005-12-14 18:55
#60901 #60901
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Warum nicht
Code (perl): (dl )
if (-M $file < 1/24)

das liefert
Code: (dl )
-M  Script start time minus file modification time, in days.

und ist m.E. übersichtlicher.
Gruß
Thomas
J-jayz-Z
 2005-12-14 19:33
#60902 #60902
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich hab da mal ne Funktion geschrieben, vielleicht hilft sie dir:
Code: (dl )
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
sub mtime {
my $file = shift;
my $option = shift;
my $mtime = (stat $file)[9];
my $epoch = time();
my $mtime = $epoch-$atime;

if($option eq "time") {
if($mtime < 60) {
my $sek = $mtime % 60;
$mtime = $sek . " sec";
} elsif($mtime >= 60 && $mtime < 3600) {
my $min = $mtime / 60 % 60;
my $sek = $mtime % 60;
$mtime = $min.":".$sek . " min";
} else {
my $hour = $mtime / 3600 % 60;
my $min = $mtime / 60 % 60;
my $sek = $mtime % 60;
$mtime = $hour.":".$min.":".$sek . " hour";
}
} elsif ($option eq "date") {
$mtime = scalar localtime $mtime;
}
}
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
esskar
 2005-12-15 01:19
#60903 #60903
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich hätte die ja so geschrieben

Code: (dl )
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
sub mtime {
  my ($file, $option) = @_;

  return undef unless -e $file;
 
  my $mtime = time - (stat $file)[9];
  my $retval = undef;

  $option = lc($option || '');
  if($option eq "time") {
     my $fmt = 'sek';
     my $tmstr = $mtime % 60;
     if($mtime / 60 >= 1) {
        $fmt = 'min';
        $tmstr = ($mtime / 60 % 60) . ':' . $tmstr;
        if($mtime / 3600 >= 1) {
           $fmt = 'hour';
           $tmstr = ($mtime / 3600 % 60) . ':' . $tmstr;
        }
     }
     $retval = "$timestr $fmt";
  } elsif($option eq "date") {
     $retval = scalar localtime $mtime;
  } else { # es gibt immer einen else fall
     warn "Unknown option '$option'.";
  }

  return $retval;
}
\n\n

<!--EDIT|esskar|1134602412-->
Crian
 2005-12-20 16:55
#60904 #60904
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
[quote=esskar,14.12.2005, 16:00][quote=Crian,14.12.2005, 15:56]Kannst du 24 nicht durch 24 teilen? Oder verstehe ich dich gerade völlig miss?[/quote]
ja... momentan fragt er nur eine datei ab... er will die datei ja aber im verzeichnis finden...[/quote]
Na da muss er doch nur den Test von oben auf alle in fragende kommenden Dateien anwenden, und dabei halt die 24 weglassen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2005-12-14 15:11.