web-dev-qa-db-ja.com

GNUまったく動作しないパラレル

私はGNU parallelをしばらく使用しようとしましたが、それをまったく機能させることができませんでした!

たとえば、実行中(空でないディレクトリで!):

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

各引数をコマンドとして単純に実行しているように見えますが、これは意味がありません。

Bash、zsh、tcsh、csh、shを試してみましたが、役に立ちませんでした。

52
WaelJ

この質問を書き終えようとしていたので、parallel --versionバージョンを報告するためにのみ、以下を見つけます。

警告:あなたは--tollefを使用しています。物事が不適切に使用されている場合--gnu。

そのフラグがデフォルトで設定されている理由は明らかではありません。言うまでもなく、--gnu働いた!

誰かのフラストレーションと混乱を何時間も節約するためにこれを投稿すると思いました。

編集:これを永続的に修正するには(少なくともUbuntuで)、--tollefフラグ/etc/parallel/config

86
WaelJ

オペレーティングシステムに応じて、実際に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

この場合、GNUバージョンを実行していません。 Ubuntu 12.04はこのようなものであり、 手動でGNU parallel をインストールして、期待する機能を取得する必要があります。

8
Ian

FREEMAT(MATLAB lookalike)からの外部コマンドとして並列実行の問題がありました。 argumentFileはコマンドに供給されませんでした。

  • --gnuをオプションに追加する
  • ["]を含むcmdString構文を使用していません

コード:

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

それに感謝します:) Ubuntu 12.04も同様です。

1
Erik D

私にとっては同じ問題でしたが、別の問題でした。 parallelコマンドを実行するだけでサイレントに終了していました。また、parallel --versioninvalid optionエラーを言っていました。私のパスには並列実行可能バイナリが1つしかありませんでしたが、それでも検出されませんでした。

以下のように修正できました

  1. whereis parallelを実行します。これにより、parallelという名前の実行可能ファイルが存在するすべてのパスが提供されます。私の場合、1つのパス/usr/local/bin/parallelしかありませんでした。このパスを使用して実行すると問題なく動作します。
  2. ~/.bashrcのような~/.zshrcまたはalias parallel='/usr/local/bin/parallel'ファイルにこのエイリアスを追加できます

そして今、parallelはチャームのように機能します。

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