Schrift
[thread]11165[/thread]

Shell-Error durchs benutzen von `` (Seite 3)



<< |< 1 2 3 4 >| >> 37 Einträge, 4 Seiten
renee
 2008-01-24 13:45
#105098 #105098
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zum Perl-Skript:

Aus
Code: (dl )
 while( my $line  = @diff ){
mach
Code: (dl )
 for my $line ( @diff ){


Zum Shell-Perl-Skript:

Hast Du Dir mal angeschaut, ob in /tmp/sizecheck4.tmp das richtige drinsteht. Und mach mal aus
Code: (dl )
open(INFILE, "/tmp/sizecheck4.tmp");
ein
Code: (dl )
open(INFILE, '<',"/tmp/sizecheck4.tmp") or die $!;



Und ersetze mal das calcdiff... Aus
Code: (dl )
push @{ $order[-1] },"\t$2\t$1\t$4\t" . "Diff: " . &calcdiff("$1","$4") . "\n";
mach
Code: (dl )
push @{ $order[-1] },"\t$2\t$1\t$4\t" . "Diff: " . abs( $1 - $4 ) . "\n";
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
FlorianL
 2008-01-24 13:54
#105100 #105100
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
Das Shellscript funktioniert Optimal, was als code dahinter steht lassen wir ersma aussen vor, ich werds bis das perl ding funzt auch nicht mehr anpacken ;)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
xtest11 # perl checksize.pl /home 11

xtest11 # ./checksize /home 11
/home/re17830
.Xauthority 159 106 Diff: 53
.sh_history.0 3858 18 Diff: 3840
.sh_history.1 9734 3154 Diff: 6580
.sh_history.2 6679 93 Diff: 6586
chksize 256 0 Diff: 256
scripts 4096 1605 Diff: 2491
/home/root
.bash_history 9359 6653 Diff: 2706
.sh_history.0 16326 15910 Diff: 416
.sh_history.1 8962 1846 Diff: 7116
.sh_history.2 13462 13288 Diff: 174
.sh_history.3 6356 5934 Diff: 422
.vi_history 334 311 Diff: 23
smit.log 83895 43945 Diff: 39950
smit.script 8125 6541 Diff: 1584
smit.transaction 10779 9541 Diff: 1238
/home/root/.ssh
known_hosts 3296 3068 Diff: 228


Die änderungen im Perl Script haben keine Änderung gebracht, ist immernoch ne endlosschleife und die cpu auslastung auf 100%
renee
 2008-01-24 14:03
#105102 #105102
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du mal mit zusätzlichen print-Befehlen getestet, *welche* Schleife endlos läuft? Wenn ja, welche Schleife ist es denn?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
betterworld
 2008-01-24 15:53
#105117 #105117
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
renee+2008-01-24 08:49:01--
betterworld+2008-01-23 22:29:29--

[...] Um mit Datumsangaben zu rechnen: CPAN:Date::Calc [...]



Habe ich ja auch schon vorgeschlagen ;-)

Sorry, irgendwie habe ich es uebersehen
FlorianL
 2008-01-24 16:14
#105118 #105118
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
renee+2008-01-24 13:03:24--
Hast Du mal mit zusätzlichen print-Befehlen getestet, *welche* Schleife endlos läuft? Wenn ja, welche Schleife ist es denn?



for my $line ( @diff )

die for schleife ists... aber das matching stimmt... ich bin gerad auch schon zu wirr im schädel... ewig langes meeting hinter mir :-/
FlorianL
 2008-01-25 14:11
#105153 #105153
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
Hallo mal wieder :)

Also... Das Script funktioniert nun, allerdings dauert es extrem lange bis das ergebniss kommt, woran könnte das liegen?!

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
xtest11 # time ./checksize.pl /home 11
/home/re17830
.Xauthority 106 159 Diff: 53
.sh_history.0 18 3858 Diff: 3840
.sh_history.1 3154 9734 Diff: 6580
.sh_history.2 93 6679 Diff: 6586
SizeCheck.diff 0 256 Diff: 256
SizeCheck.ksh 1605 4096 Diff: 2491
/home/root
.bash_history 6653 11498 Diff: 4845
.sh_history.0 15910 16326 Diff: 416
.sh_history.1 1846 9036 Diff: 7190
.sh_history.2 13288 13462 Diff: 174
.sh_history.3 5934 6356 Diff: 422
.sh_history.4 3272 3402 Diff: 130
.vi_history 311 333 Diff: 22
smit.log 43945 84044 Diff: 40099
smit.script 6541 8125 Diff: 1584
smit.transaction 9541 10779 Diff: 1238
/home/root/.ssh
known_hosts 3068 3296 Diff: 228

real 3m13.819s
user 2m59.065s
sys 0m0.039s
xtest11 #


Hier nochma der aktuelle code so wie er durchgelaufen ist:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/perl
use strict;
use Data::Dumper;

my $filespath = "/home/re17830/chksize/checksize_db/";

if (defined $ARGV[0]) {} else {
                print("Error: No argument\n\nUsage: checksize <path> <day>\n");
                exit 0;
}

chomp(my $mountpt = $ARGV[0]);
chomp(my $day = $ARGV[1]);

chomp(my $month = `date +%m`);
chomp(my $premonth = ($month -1));
if ($month == 01) {
        $premonth = 12;
}

chomp(my $year = `date +%y`);
chomp(my $preyear = ($year - 1));

my $file = "$filespath\SizeCheck-$year\-$month\-$day\.dat";
my $monthfile = "$filespath\SizeCheck-$year\-$premonth\-$day\.dat";
my $yearfile = "$filespath\SizeCheck-$preyear\-$premonth\-$day\.dat";

if (-T "$file") {} else {
        $file = "$monthfile";
}

my @fslist = `ls -Rlgo $mountpt`;

my $tmpfile = "/tmp/SizeCheck.tmp";
open(REWRITE, ">$tmpfile");
print REWRITE "$mountpt\:\n";

foreach(@fslist) {
        chomp();
        my @line = split(/ +/);
        if ($line[0] =~ m/^\//g) {
                print REWRITE "\n$line[0]\n";
        } elsif (($line[0] =~ m/^dr/g) || ($line[0] =~ m/^-r/g)) {
                print REWRITE "$line[2]\t\t$line[6]\n";
        }
}

my @diff = `sdiff $file $tmpfile \|egrep \[\:\\\<\\\>\\\|\]`;

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";
      }
   }
}

for( @order ){
   next if @$_ == 1;
   print $_ for @$_;
}

renee
 2008-01-25 14:26
#105154 #105154
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du mal getestet *was* da so viel Zeit benötigt?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
FlorianL
 2008-01-25 14:40
#105157 #105157
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
Nein, wie mach ich das am besten? Es wird wohl die foreach schleife am ende sein, aber was genau da so problematisch ist weiss ich nicht.
FlorianL
 2008-01-25 14:49
#105159 #105159
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
Ich habe jetzt zwischen jede bedingung ein print a/b/c geschrieben, und es scheint so als wenn die foreach schleife nicht das problem ist, sondern die for-schöeife am ende des scripts :/
renee
 2008-01-25 14:51
#105161 #105161
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du kannst das mit CPAN:Devel::Profile machen oder ganz einfach häufiger mal eine print-Anweisung... Also z.B. mal print scalar(time) . ": start...\n";

[...]

print scalar(time) . ": starte 'ls -Rlgo $mountpt'...\n";
[... das ls ...]
print scalar(time) . ": done...\n";

[...]

print scalar(time) . ": vor dem 'sdiff'...\n";
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 3 4 >| >> 37 Einträge, 4 Seiten



View all threads created 2008-01-21 15:12.