12
votes

Scrips Shell: Utilisation de Xargs pour exécuter des instances parallèles d'une fonction de coquille

J'essaie d'utiliser Xargs dans un script shell pour exécuter des instances parallèles d'une fonction que j'ai définie dans le même script. La fonction est l'une fois l'extraction d'une page, et il est donc important que les pages soient effectivement extraites simultanément dans des processus parallèles et non dans les processus d'arrière-plan (si ma compréhension de cela est fausse et qu'il y a une différence négligeable entre les deux, faites-le-moi de me faire savoir) .

La fonction est la suivante: xxx

Comment faire-on avec un tuyau xargs sous une forme pouvant prendre nombre de fois pour exécuter TIME_A_URL en parallèle comme argument? Et oui, je sais que GNU parallèle, je n'ai tout simplement pas le privilège d'installer des logiciels où j'écris ceci.


0 commentaires

3 Réponses :


0
votes

Si vous installez GNU parallèle sur un autre système, vous verrez que la fonctionnalité est dans un seul fichier (appelé parallèle).

Vous devriez pouvoir simplement copier ce fichier à votre propre ~ / bin.


0 commentaires

12
votes

Voici une démonstration de la manière dont vous pourrez peut-être obtenir votre fonction pour fonctionner:

$ f() { echo "[$@]"; }
$ export -f f
$ echo -e "b 1\nc 2\nd 3 4" | xargs -P 0 -n 1 -I{} bash -c f\ \{\}
[b 1]
[d 3 4]
[c 2]


1 commentaires

J'ai utilisé xargs -p0 -n1 -i {} bash -c "f {}" qui fonctionne toujours et semble un peu de taille.



1
votes

sur Mac OS X:

Xargs: max. Les processus doivent être> 0 (pour: xargs -p [> 0]) xxx


0 commentaires