Shell: traiter 100 @ip en maintenant 10 en //
mortelrdv
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
supposons que j'ai une liste de 47 @ip, je souhaiterai de faire un traitement identique sur chacun de ces @ip.
methode 1 : traiter l'un après l'autre les 47 @ip.
inconvenient : long
-----------------------------------------------------
methode 2 : traiter les 47 @ip en //. (je ne sais comment faire !!)
inconvenient : trop de site en meme temps
------------------------------------------------------
methode 3 : en traiter 10 et lorsque l'un d'entre eux est fini, on lance le traitement sur sur l'@ip suivant dans la liste des 47 @ip.
ce qui fait que :
10 traitement // reste 37
10 traitement // reste 36
....
10 traitement // reste 9
9 traitement // reste 8
...
3 traitement // reste 2
2 traitement // reste 1
1 traitement // reste 0
Je souhaiterai faire la "methode 3", est ce possible ? comment ?
Merci
PS: j'espère avoir été claire dans mon explication. Car c'est pas évident d'explique ça.
supposons que j'ai une liste de 47 @ip, je souhaiterai de faire un traitement identique sur chacun de ces @ip.
methode 1 : traiter l'un après l'autre les 47 @ip.
inconvenient : long
-----------------------------------------------------
methode 2 : traiter les 47 @ip en //. (je ne sais comment faire !!)
inconvenient : trop de site en meme temps
------------------------------------------------------
methode 3 : en traiter 10 et lorsque l'un d'entre eux est fini, on lance le traitement sur sur l'@ip suivant dans la liste des 47 @ip.
ce qui fait que :
10 traitement // reste 37
10 traitement // reste 36
....
10 traitement // reste 9
9 traitement // reste 8
...
3 traitement // reste 2
2 traitement // reste 1
1 traitement // reste 0
Je souhaiterai faire la "methode 3", est ce possible ? comment ?
Merci
PS: j'espère avoir été claire dans mon explication. Car c'est pas évident d'explique ça.
3 réponses
-
je me suis tromper sur l'exemple de la methode 3 :
10 traitement // reste 37
10 traitement // reste 36
....
10 traitement // reste 9
10 traitement // reste 8
...
10 traitement // reste 1
10 traitement // reste 0
...
9 traitement // reste 0
8 traitement // reste 0
...
2 traitement // reste 0
1 traitement // reste 0
fin de tous le traitement ! -
salut,
#!/bin/bash adressesIP=( add1 add2 add3 add4 add5 add6 ... add100 ) for addr in "${adressesIp[@]}" do mapfile -t procS < <(jobs -r) while [ ${#procS[@]} -ge 10 ] do sleep 2 done ton_traitement "$addr" & doneje n'ai pas testé. -
hello
essayer#!/bin/bash C=10 while read IP ; do (commandes $IP) & jobs=($(jobs -p)) while (( ${#jobs[*]} >= $C )) ; do sleep 3 jobs=($(jobs -p)) done done < fichier