J'ai un script shell job.sh
.Exécuter le script shell en parallèle dans bash/linux
contenu sont ci-dessous:
#!/bin/bash
table=$1
sqoop job --exec ${table}
Maintenant, quand je fais ./job.sh table1
Le script exécute avec succès. J'ai les noms des tables dans un fichier tables.txt
.
Maintenant, je veux boucler sur le fichier tables.txt
et exécuter le script job.sh
10 fois en parallèle.
Comment puis-je faire cela?
Idéalement, quand j'exécute le script, je veux le faire comme ci-dessous;
./job.sh table1
./job.sh table2
./job.sh table3
./job.sh table4
./job.sh table5
./job.sh table6
./job.sh table7
./job.sh table8
./job.sh table9
./job.sh table10
Quelles sont les options disponibles?
@CharlesDuffy vrai! Le '-I' n'est pas nécessaire dans ce cas. cela pourrait être utile dans le cas où 'printf"% s \ n "{1..20} | xargs -I% -n1 -P10 echo sqoop travail --exec table% ' – jm666
Bien sûr, bien que l'on puisse utiliser' table {1..20} 'là aussi, et éviter la pilosité qui vient avec' -I'. Certes, la limite de chaîne de 255 octets n'est pas un problème * immédiat * et la tendance à être abusée de manière à provoquer des attaques par injection ou la limite spécifiée par POSIX sur le nombre de substitutions par ligne de commande (ou 5), mais c'est quelque chose qui me frappe comme une odeur. –