Utiliser parallèle pour exécuter un script sans entrée

10

J'essaie d'exécuter de nombreuses instances d'un script avec GNU parallèle, mais le script ne prend aucun argument.

Si j'exécute simplement 'foo.sh parallèle', j'obtiens ceci:

parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
user1700840
la source

Réponses:

10

En supposant que vous souhaitiez exécuter dix fois, cette syntaxe fonctionnera:

parallel -n0 foo.sh ::: {1..10}

parallela besoin d'une séquence d'entrée d'une certaine longueur ( ::: {1..10}) ET vous devez ignorer le contenu de la séquence d'entrée ( -n0), vous ne vous souciez que de sa longueur.

Votre commande d'origine:, parallel foo.shne contient aucune séquence d'entrée pour indiquer le parallélisme souhaité. L'avertissement cryptique vous indique que vous parallelallez commencer à écouter le terminal pour une séquence d'entrée, et que ce n'est probablement pas ce que vous voulez.

Voici l'exemple de tutoriel:

seq 10 | parallel -n0 my_command my_args

Comment ça fonctionne:

  • parallelprend toujours une séquence d'entrée de quelque part. Il peut s'agir d'une séquence délimitée par des espaces en ligne précédée de :::OU une séquence délimitée par des sauts de ligne à partir d'un fichier ou d'une source semblable à un fichier telle qu'un tuyau. Dans cet exemple, la séquence d'entrée provient d'un tuyau.
  • seq 10 produit une séquence délimitée par des sauts de ligne de un à dix.
  • L' -n0option indique à parallèle d'ignorer les valeurs dans la séquence d'entrée. Tout ce qui nous intéresse, c'est la longueur de la séquence, pas son contenu. Même si les chiffres ne sont pas utilisés, la commande sera toujours exécutée dix fois.

Un autre exemple:

parallel -n0 echo -n 'x' ::: {1..5}

Comment ça fonctionne:

  • La séquence d'entrée est en ligne.
  • {1..5} produit une séquence de chiffres de un à cinq délimitée par des espaces.
  • -n0ignore les valeurs de séquence (et nous faisons écho à 'x'chaque fois à la place.)
  • Production: xxxxx

Comparer aux:

parallel echo -n ::: {1..5}

Comment ça fonctionne:

  • La séquence d'entrée est en ligne.
  • {1..5} produit une séquence de chiffres de un à cinq délimitée par des espaces.
  • Chaque valeur de la séquence d'entrée est utilisée comme argument pour echo. Commande non garantie.
  • Sortie: 43215. Pourrait être n'importe quelle commande.
jwfearn
la source