web-dev-qa-db-fra.com

GNU parallèle ne fonctionne pas du tout

J'essaie d'utiliser GNU parallèle depuis un certain temps, mais je n'ai jamais réussi à le faire fonctionner du tout!

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 qu'il exécute simplement chaque argument comme une commande, ce qui n'a aucun sens.

J'ai essayé bash, zsh, tcsh, csh et sh, en vain.

52
WaelJ

Alors que j'allais terminer la rédaction de cette question, j'ai couru parallel --version pour signaler la version, uniquement pour trouver:

AVERTISSEMENT: VOUS UTILISEZ --tollef. SI LES CHOSES AGISSENT, UTILISATION ÉTRANGÈRE --gnu.

Il n'est pas clair pour moi pourquoi ce drapeau est défini par défaut. Inutile de dire qu'en utilisant --gnu travaillé!

J'ai pensé que je publierais ceci pour sauver quelqu'un des heures de frustration et de confusion.

EDIT: Pour résoudre ce problème de façon permanente (dans Ubuntu au moins), supprimez le --tollef drapeau dans /etc/parallel/config

86
WaelJ

Selon votre système d'exploitation, vous devez vérifier si vous exécutez réellement 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 tel est le cas, vous n'exécutez pas la version GNU. Ubuntu 12.04 est comme ça, et vous devrez installer manuellement GNU parallèle pour obtenir les fonctionnalités que vous attendez.

8
Ian

Eu des problèmes en parallèle en tant que commande externe de FREEMAT (sosie MATLAB); l'argumentFile n'a pas été transmis à la commande correctement résolu par:

  • Ajout de --gnu aux options
  • Ne pas utiliser la syntaxe cmdString impliquant ["]

Code:

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

Merci pour cela :) Im sur Ubuntu 12.04 aussi.

1
Erik D

Pour moi, c'était le même problème mais un problème différent. L'exécution de la commande parallel se terminait silencieusement. Aussi parallel --version disait invalid option Erreur. Dans mon chemin, il n'y avait qu'un seul binaire exécutable parallèle, mais il ne détectait toujours pas.

j'ai pu le réparer comme ci-dessous:

  1. Courir whereis parallel. Cela donne tous les chemins où les exécutables nommés parallèle sont présents. Pour mon cas, il n'y avait qu'un seul chemin /usr/local/bin/parallel. L'exécution en utilisant ce chemin fonctionne très bien.
  2. Vous pouvez ajouter un alias pour cela dans ~/.bashrc ou ~/.zshrc fichier comme alias parallel='/usr/local/bin/parallel'

Et maintenant, parallel fonctionne comme un charme.

dev-dsk % parallel --version         
GNU parallel 20190322
Copyright (C) 2007-2019 Ole Tange and Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
GNU parallel comes with no warranty.
0
bit_cracker007