Helló. Van egy script query, hogy én vagyok stumped amelyen Remélem segíthet.
Alapvetően van egy script, hogy a KSH felhívja a folyamatot a
n számú bináris fájlokat. Ezek a fájlok mérete legfeljebb 1Gb. A folyamat lehet írni
n több kép egyszerre (párhuzamos működés) alapuló paralellisation paraméter betáplálják a szkript elején. Általában azt várni, hogy ezt a folyamatot, majd az összes fájlt gzip egyénileg (gzip *. dmp például). Ugyanakkor egyes rendszerek nem volt elég hely a lemezen, hogy megvárja, amíg az összes kép 1Gb volna elő.
Azt már korábban írt néhány kódot gzip fájlok párhuzamosan (lásd alább), azonban most kell gzip őket párhuzamosan, miközben az első folyamat fut. Kell, hogy legyen óvatos, ne próbálja meg gzip fájlokat jelenleg írásban (akár
n A párhuzamos parancs), így egyfajta looping lesz szükség. És azt akarom, hogy a lehetőség a párhuzamos gzip, ha lehet.
Kód:
...
gzip_func() {
started=0
threads=4
for filename in `ls -1 ${EXP_DIR}/*.dmp`
do
if [[ ${started} -lt ${threads} ]]; then
let started=started+1
echo "gzip ${filename}"
( $GZIPCMD ${filename} ) &
list_of_pids="${list_of_pids} $!"
else
print "wait ${list_of_pids}"
wait ${list_of_pids}
list_of_pids=""
started=0
fi
done
}
...
my_binary_file_creation_process
...
while [ `find ${EXP_DIR} -name \*.dmp|wc -l` -gt "0" ]; do
gzip_func
print "wait ${list_of_pids}"
wait ${list_of_pids}
list_of_pids=""
done
Tud akárki segítsen nekem írni néhány kódot ehhez a hagyományos Solaris 8/9/10 eszközök felhasználásával korn shell.
Perl parancsokat kell lennie (vers 5.6.1 telepítve van).
Nagyon köszönöm, és a Best Regards,
Stephen.