55 votes

GNU parallèle ne fonctionne pas à tous les

J'ai essayé d'utiliser GNU parallèle pendant un certain temps, mais je n'ai jamais été en mesure de l'obtenir pour fonctionner à tous!

Par exemple, en cours d'exécution (dans un répertoire non vide!):

ls | parallel echo            # Outputs single new line
ls | parallel echo echo echo  # Outputs three new lines.
ls | parallel echo {}         # /bin/bash: {}: command not found
ls | parallel echo '{}'       # /bin/bash: {}: command not found
ls | parallel 'echo {}'       # Outputs: {}
ls | parallel -IMM 'echo MM'  # Outputs: MM

Il semble que c'est tout simplement l'exécution de chaque argument d'une commande, qui n'a aucun sens.

J'ai essayé de bash, zsh, tcsh, csh, et les poissons, en vain.

90voto

WaelJ Points 1395

Comme j'étais sur le point de compléter la rédaction de cette question, j'ai couru parallel --version rapport à la version, seulement pour trouver:

Attention: VOUS UTILISEZ --tollef. SI les CHOSES SONT BIZARRE d'UTILISER --gnu.

Il n'est pas clair pour moi pourquoi cet indicateur est défini par défaut. Inutile de dire que, à l'aide de --gnu a fonctionné!

Pensé que je pourrais poster ce pour sauver des heures de frustration et de confusion.

EDIT: Pour résoudre ce de façon permanente (dans Ubuntu au moins), supprimer l' --tollef drapeau en /etc/parallel/config

14voto

Ian Points 216

Selon votre système d'exploitation, vous devez vérifier si vous êtes effectivement en cours d'exécution de la version GNU.

$ parallel --version
parallel: invalid option -- '-'
parallel [OPTIONS] command -- arguments
    for each argument, run command with argument, in parallel
parallel [OPTIONS] -- commands
    run specified commands in parallel

Si c'est le cas, vous n'êtes pas sous la version GNU. Ubuntu 12.04 est comme ça, et vous aurez besoin pour installer manuellement GNU parallèle pour obtenir les fonctionnalités que vous attendez.

1voto

Erik D Points 1

Eu de problèmes de fonctionnement parallèle comme une commande externe de FREEMAT (MATLAB sosie); la argumentFile n'a pas été nourri à la commande correctement résolu par:

  • L'ajout de --gnu pour les options
  • Pas à l'aide de cmdString syntaxe impliquant ["]

Code:

cmdString = 'parallel --gnu command ::: ';
    while j<=jLength
        cmdString = [cmdString argumentFilePath(j,:) ' '];
        j=j+1;
    end
    system(cmdString)

Merci pour ça :) Im sur Ubuntu 12.04.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X