Wie füttere ich eine große Anzahl von Befehlen an GNU Parallel?

8

Ich evaluiere, ob GNU Parallel verwendet werden kann, um parallel auf einem System gespeicherte Dateien zu durchsuchen . Es kann nur eine Datei für jeden Tag des Jahres (Doy) auf dem System geben (also maximal 366 Dateien pro Jahr). Nehmen wir an, es gibt 3660 Dateien auf dem System (ungefähr 10 Jahre Daten). Das System könnte ein Multi-CPU-Multi-Core-Linux oder ein Multi-CPU-Solaris sein.

Ich speichere die Suchbefehle, um die Dateien in einem Array auszuführen (ein Befehl pro Datei). Und das ist, was ich gerade mache (mit bash), aber dann habe ich keine Kontrolle darüber, wie viele Suchen parallel gestartet werden sollen (will definitiv nicht alle 3660 Suchvorgänge gleichzeitig starten):

%Vor%

Wenn ich parallel verwenden würde (was automatisch die maximalen CPUs ermittelt / Kerne und starte nur so viele Suchen parallel), wie kann ich das Array cmds mit parallel wiederverwenden und den obigen Code umschreiben? Die andere Alternative besteht darin, alle Befehle in eine Datei zu schreiben und dann cat cmd_file | parallel

auszuführen     
sv. 07.05.2013, 19:18
quelle

1 Antwort

6

Ссылка sagt:

%Vor%

Sie wollen das Echo nicht, also:

%Vor%

Wenn Sie $ cmds für nichts anderes benötigen, dann verwenden Sie 'sem' (das ist ein Alias ​​für parallele --semaphore) Ссылка

%Vor%

Sie haben nicht beschrieben, was & lt; Bedingung & gt; könnte sein. Wenn Sie nur eine For-Schleife machen, können Sie das gesamte Skript ersetzen mit:

%Vor%

(basierend auf Ссылка ).

    
Ole Tange 13.05.2013, 07:42
quelle