[linux] paralelne spustanie procesov (kompresia logov)

Peter Viskup skupko.sk na gmail.com
Úterý Únor 2 19:55:37 CET 2010


Naskriptuj si to.
Ja som to riesil v Perl-e (urcite sa to da aj v shelli ;-) ).
(nasledujuci kod nemusi byt plne funkcny a je nutne ho doplnit)

# spracuva sa prvy argument vo forme --childs <number>

use warnings;
use strict;
use locale;
my $MAXCHILD = 5;
my $CURCHILD = 0;
my ($num, $start_num, $end_num, $childs) = (0,0,0);

use Getopt::Long;
if (!GetOptions('childs=i'=>\$childs)) {
    usage();
    die "Wrong options!\n";
}
if ($childs>0){
    $MAXCHILD=$childs;
}

while ($num <= $end_num) {
    if($CURCHILD < $MAXCHILD){
        if(my $pid = fork()){
            addchild();
        }
        elsif(defined $pid){
            # tuto nieco vykonava child...
            exit;
        }
        else{
            die "Fork failed: $!\n";
        }
    }
    else {
        while($CURCHILD >= $MAXCHILD){
            my $processid = waitpid(-1, 0);
            delchild();
        }
    }
}
sub addchild {$num++; $CURCHILD++;}
sub delchild {$CURCHILD--;}


--
Peter Viskup


Matus UHLAR - fantomas wrote:
> Zdravim,
>
> poznate niekto aplikaciu ktora by mi umoznila zadefinovat niekolko procesov
> ktore by sa mali spustit, pricom paralelne by malo bezat vzdy max. X
> procesov?
>
> rad by som komprimoval dost velke logy paralelne na kazdom procesore jeden
>
>   



Další informace o konferenci linux