Utilizzo di parallel per eseguire script senza input


10

Sto cercando di eseguire molte istanze di uno script con GNU parallelo, ma lo script non accetta argomenti.

Se eseguo 'parallel foo.sh' ottengo questo:

parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.

Risposte:


10

Supponendo che si desideri eseguire dieci volte, questa sintassi funzionerà:

parallel -n0 foo.sh ::: {1..10}

parallelha bisogno di una sequenza di input di una certa lunghezza ( ::: {1..10}) E devi ignorare il contenuto della sequenza di input ( -n0), ti importa solo della sua lunghezza.

Il tuo comando originale parallel foo.sh:, non contiene alcuna sequenza di input per indicare quanto parallelismo vuoi. L'avvertimento criptico ti dice che parallelinizierà ad ascoltare il terminale per una sequenza di input e che questo probabilmente non è quello che desideri.

Ecco l'esempio tutorial:

seq 10 | parallel -n0 my_command my_args

Come funziona:

  • parallelprende sempre una sequenza di input da qualche parte. Può essere una sequenza delimitata da spazi in linea preceduta da :::OR una sequenza delimitata da nuove righe da un file o da una sorgente simile a un file come una pipe. In questo esempio la sequenza di input proviene da una pipe.
  • seq 10 produce una sequenza di cifre delimitata da nuova riga da uno a dieci.
  • L' -n0opzione dice parallelo di ignorare i valori nella sequenza di input. Tutto ciò che ci interessa è la lunghezza della sequenza, non il suo contenuto. Anche se le cifre non vengono utilizzate, il comando verrà comunque eseguito dieci volte.

Un altro esempio:

parallel -n0 echo -n 'x' ::: {1..5}

Come funziona:

  • La sequenza di input è in linea.
  • {1..5} produce una sequenza delimitata da spazi di cifre da una a cinque.
  • -n0ignora i valori di sequenza (e invece facciamo eco la stringa 'x'ogni volta).
  • Produzione: xxxxx

Confrontare con:

parallel echo -n ::: {1..5}

Come funziona:

  • La sequenza di input è in linea.
  • {1..5} produce una sequenza delimitata da spazi di cifre da una a cinque.
  • Ogni valore della sequenza di input viene utilizzato come argomento per echo. Ordine non garantito
  • Uscita: 43215. Potrebbe essere qualsiasi ordine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.