Bonjour. J'ai un script de requête que je suis perplexe sur ce qui, je l'espère, vous pouvez aider en.
En gros, j'ai un script ksh qui appelle un processus de création
n nombre de fichiers binaires. Ces fichiers ont une taille maximale de 1 Gb. Le processus peut écrire
n nombre de fichiers à la fois (en parallèle) sur la base du paramètre paralellisation injectée dans le script au départ. Normalement, nous nous attendre à ce processus et à remplir puis gzip tous les fichiers individuellement (gzip *. dmp, par exemple). Toutefois, sur certains systèmes, nous ne disposons pas de suffisamment d'espace disque à attendre jusqu'à ce que tous les fichiers de 1Go ont été produites.
J'ai déjà écrit du code à gzip les fichiers en parallèle (voir ci-dessous), mais je besoin de gzip en parallèle alors que le premier processus s'exécute. J'ai besoin de faire attention à ne pas tenter de gzip tous les fichiers en cours de rédaction (jusqu'à
n à ceux de la commande), ainsi une sorte de boucle sera nécessaire. Et je tiens à maintenir l'option d'parallèle gzip si possible.
Code:
...
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
Quelqu'un peut-il m'aider à écrire du code pour utiliser cette norme solaris 8/9/10 outils à l'aide du korn shell.
Perl commandes devrait être possible (vers 5.6.1 installé).
Merci et meilleures salutations,
Stephen.