2017-04-19 3 views
0

Hey vous de grands codage gens,Bash dd parallèles et mkfs

Au début, je suis un débutant total bash et seulement avoir une certaine expérience en Java. Maintenant ESt ma tâche de faire un script qui permet de flasher quelques centaines de lecteurs USB aussi rapide et automatique que possible sur une machine Linux, qui ne doit pas être changé. Donc non Installation de plus de paquets.

Bon maintenant à la question: Ive la tâche en fente à deux skripts.

Un filtres lsusb et greps l'appareil à droite, puis commence un processus d'arrière-plan avec l'ID du périphérique pour copier sur l'image et faire des trucs partentioning.

Le script principal filtre quant à lui pour les nouveaux appareils et crée un nouveau processus d'arrière-plan pour la copie pour eux aussi. Lorsqu'il ne reste plus de périphériques adaptés, le script principal attend que tous les processus d'arrière-plan soient terminés et demande à l'utilisateur de retirer tous les périphériques et de bloquer le paquet suivant.

Actuellement, il fonctionne parfaitement bien. le dd dans un processus de fond en attendant que l'autre finisse. Comme ils devraient fonctionner en parallèle et que les processus qui démarrent le dd ont des pids différents, je n'ai aucune idée de pourquoi attendre.

Voici une partie du script:

Le premier paramètre est le numéro de série et le second est le nom du fichier image à copier

+0

préfixer votre code avec quatre espaces blancs. Veuillez jeter un coup d'œil à [edit-help] (http://stackoverflow.com/editing-help). – Cyrus

+1

Ainsi, vous démarrez plusieurs instances du script publié en arrière-plan, mais elles s'exécutent en série? Ce n'est pas à la hauteur de ce script. Vous devriez (en plus) poster le script qui fait l'arrière-plan. –

+0

Ce n'est pas tout le script posté qui fonctionne en série, c'est seulement la partie dd. Avec ps aux, je peux voir que tous les processus en arrière-plan que j'ai démarrés sont en cours d'exécution, mais il n'y a qu'un seul processus dd et quand il se termine un nouveau commence. Je commence les processus d'arrière-plan dans une boucle avec ./flash.sh $ temp_serial $ Image & –

Répondre

0

Vous pouvez essayer de déplacer le sync de la ligne 8 à la ligne ci-dessus echo "all connected devices are flashed, please change devices" ou d'une autre ligne après avoir attendu (wait $i) pour toutes les opérations pour terminer.