Johnny Hall wrote: > > Hello all, Hello,
> I am trying to take a file of variable length on a daily basis and > divide it up into 4 equal parts for processing on each file. Does > someone have an easy way to do this? > > The original file is just a series of numbers like.. > > 3233404936 > 3233404934 > 3233669122 > 3233557761 > 3233818369 > 3234343425 > 3233431553 > 3233455617 > 3233404932 > 3233435393 > 3233562369 > 3233554689 > .... > > I've tried everything I know. Granted, that isn't very much. :-) > > Here is what I'm doing so far.. > > #!/bin/perl -w > # Script for cloning Unix hosts weekly. > # This is ran from cron on Saturdays at 9am > > # This will get Full savesets for all servers in the /root/backups/ux_serverlist file > $SSID_LIST = "/tmp/ux_clonelist"; > @CLONE_LIST = `cat /root/backups/ux_serverlist`; > system "rm $SSID_LIST"; > foreach $CLONE_HOST (@CLONE_LIST) > { > chomp $CLONE_HOST; > system "/usr/sbin/mminfo -q level=full,client=$CLONE_HOST -r 'ssid' -t 'one >week ago' >> $SSID_LIST"; > } > > # Attempt to break the /tmp/ux_clonelist file into equal parts for multiple cloning >streams > $NUM_SSID = `cat '$SSID_LIST' | wc -l`; > chomp $NUM_SSID; > $NUM_CON_JOBS = 4; > $SSID_PER_FILE = int(($NUM_SSID / $NUM_CON_JOBS) + 1); > chomp $SSID_PER_FILE; > $FILE_COUNT = 1; > $CLONE_FILE_LIST = "$SSID_LIST.$FILE_COUNT"; > @SSID_LIST_ARRAY = `cat $SSID_LIST`; > system "rm $CLONE_FILE_LIST"; > $SSID_COUNT = 0; > $FILE_COUNT = 0; > chomp $SSID_COUNT; > open(FILE, ">>$CLONE_FILE_LIST"); > while ($SSID_COUNT <= $SSID_PER_FILE) > { > foreach $SSID (@SSID_LIST_ARRAY) > { > while ($SSID_COUNT <= $SSID_PER_FILE) > { > open(FILE, ">>$CLONE_FILE_LIST"); > chomp $SSID; > print FILE "$SSID \n"; > $SSID_COUNT = ($SSID_COUNT + 1); > close FILE; > } > } > $FILE_COUNT = ($FILE_COUNT + 1); > $CLONE_FILE_LIST = "$SSID_LIST.$FILE_COUNT"; > } > > # Now start cloning from the 4 files > #system "nsrclone -v -s catlmsxi02 -b 'UX Clone' -S -f $CLONELIST"; > #system "rm $CLONELIST"; This should do what you want: #!/bin/perl -w use strict; # Script for cloning Unix hosts weekly. # This is ran from cron on Saturdays at 9am my $ssid_list = '/tmp/ux_clonelist'; my $num_con_jobs = 4; # This will get Full savesets for all servers in the /root/backups/ux_serverlist file open CLONE, '/root/backups/ux_serverlist' or die "Cannot open '/root/backups/ux_serverlist': $!"; my @ssid_list_array; while ( my $clone_host = <CLONE> ) { chomp $clone_host; push @ssid_list_array, `/usr/sbin/mminfo -q level=full,client=$clone_host -r 'ssid' -t 'one week ago'`; } my $num_ssid = @ssid_list_array; # Break the clonelist into equal parts for multiple cloning streams my $ssid_per_file = int( ( $num_ssid + ( $num_con_jobs - 1 ) ) / $num_con_jobs ); for my $file_count ( 1 .. 4 ) { open FILE, "> $ssid_list.$file_count" or die "Cannot open $ssid_list.$file_count: $!"; print FILE splice @ssid_list_array, 0, $ssid_per_file; close FILE; } # Now start cloning from the 4 files for my $file_count ( 1 .. 4 ) { system "nsrclone -v -s catlmsxi02 -b 'UX Clone' -S -f $ssid_list.$file_count"; unlink "$ssid_list.$file_count" or warn "Cannot delete $ssid_list.$file_count: $!"; } __END__ John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]