Thread Shell-Error durchs benutzen von ``
(36 answers)
Opened by FlorianL at 2008-01-21 15:12
Moin, hoffe ihr hattet ein schönes Wochenende ;)
Ich wollte heute morgen mal Date::Calc einbauen, stellte dann aber fest das es wohl nicht zu den standart modulen gehört. Ist für mich also nix weil ich es höchstens auf die Testsysteme aber keinesfalls auf die Prod installieren darf, ich hab das Problem jetzt so gelöst: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 # Bei beendigung des Scripts werden alle dat-Files die älter als 4 Tage sind gelöscht. my @datfiles = `ls -lt $filespath \|awk \'\{ print \$9\}\'`; foreach (@datfiles) { chomp(my $file = $_); chomp(my $wholefile = "$filespath/$file"); if (("%.3f",-M $wholefile) > "5") { unlink("$wholefile"); } else { next; } } Dann wollte ich mich um das 2. Script kümmern das für die Ausgabe zuständig ist. Ich habe wie geraten ein paar 'time-prints' eingebaut: Code: (dl
)
1 xtest11 # ./checksize.pl /home 28 Es scheint also doch die letzte schleife zu sein die alles so ausbremst: Code (perl): (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 30 print scalar(time) . ": vor dem 'sdiff'...\n"; my @diff = `sdiff $file $tmpfile \|egrep \[\:\\\<\\\>\\\|\]`; print scalar(time) . ": diff done...\n"; print scalar(time) . ": foreach-diff-schleife start\n"; my @order; foreach (@diff ){ if ( $_ =~ m/^(.+):\s+\/.+:$/) { push @order, [$1."\n"]; } elsif ( $_ =~ m/(^\d+)\s+(.+)\s+(.)\s+(\d+)\s+(.+)\s+$/ ) { if ($3 eq "\|") { push @{ $order[-1] },"\t$2\t$1\t$4\t" . "Diff: " . abs($1 - $4) . "\n"; } elsif ($3 eq "\<") { push @{ $order[-1] }, "\tNew File:\t$5\tSize: $4\n"; } elsif ($3 eq "\>") { push @{ $order[-1] },"\tFile deleted:\t$5\n"; } } } print scalar(time) . ": foreach-diff-schleife stop\n"; print scalar(time) . ": start der order schleife\n"; for( @order ){ next if @$_ == 1; print $_ for @$_; } print scalar(time) . ": order-schleife stop\n"; Liegt es vieleicht an dem abs($...) ? |