Gnu Parallel hängt, während ein Prozess "schläft"

1295
Randomize

Ich führe einen Befehl parallel mit Gnu Parallel aus, der zwei Parameter als Eingabe hat, ein Verzeichnis und eine conf-Datei:

parallel --gnu my_command ::: (ls -d dir*test) ::: properties.conf 

Ich lasse es auf einer Multi-Core-CPU (24 Kerne) laufen und "my_command" wird auf jedem einzelnen Kern ausgeführt, um insgesamt 24 Ausführungen auszuführen. Jede einzelne Instanz des Befehls generiert erfolgreich eine Ausgabe. Das Problem ist, dass ein "my_command" nach seiner Ausführung manchmal in den "schlafenden" Modus wechselt und auf diese Weise gnu-parallel niemals beendet wird. Gibt es eine Möglichkeit, gnu-parallel dazu zu zwingen, diese schlafenden Prozesse automatisch zu beenden oder automatisch aufzuwachen?

3

1 Antwort auf die Frage

2
Ole Tange

Verwenden Sie --timeout:

parallel --timeout 200% my_command ::: dir*test ::: properties.conf 
Ich habe es versucht und es hat funktioniert. Ich hatte gerade 4 Prozesse von 24 im Schlafmodus und sie wurden veröffentlicht. Trotzdem hat es ziemlich lange gedauert. Von Mann kann ich keine 200% -ige Bedeutung bekommen. Wie kann ich es besser einschätzen? Randomize vor 10 Jahren 0
Zeit für den Befehl. Wenn der Befehl länger als eine Sekunde dauert, wird er mit SIGTERM beendet, gefolgt von SIGTERM 200 ms später, gefolgt von SIGKILL 200 ms später. Wenn auf val ein% folgt, wird das Zeitlimit dynamisch als Prozentsatz der mittleren Durchschnittslaufzeit berechnet. Nur Werte> 100% sind sinnvoll. Ole Tange vor 10 Jahren 1