Zakładając, że chcesz uruchomić dziesięć razy, ta składnia będzie działać:
parallel -n0 foo.sh ::: {1..10}
parallel
potrzebuje sekwencji wejściowej o pewnej długości ( ::: {1..10}
) ORAZ musisz zignorować zawartość sekwencji wejściowej ( -n0
), zależy tylko na jej długości.
Twoje oryginalne polecenie parallel foo.sh
:, nie zawiera sekwencji wejściowej wskazującej, ile chcesz równoległości. To tajemnicze ostrzeżenie mówi ci, że parallel
zaczniesz nasłuchiwać terminala dla sekwencji wejściowej i że prawdopodobnie nie jest to to, czego chcesz.
Oto przykład samouczka:
seq 10 | parallel -n0 my_command my_args
Jak to działa:
parallel
zawsze bierze gdzieś sekwencję wejściową. Może to być sekwencja rozdzielona spacjami, poprzedzona :::
OR, lub sekwencja rozdzielona znakiem nowej linii z pliku lub źródła podobnego do pliku, takiego jak potok. W tym przykładzie sekwencja wejściowa pochodzi z potoku.
seq 10
tworzy sekwencję cyfr oddzieloną znakiem nowej linii od jednego do dziesięciu.
-n0
Tekst zawiera równoległe do ignorowania wartości w sekwencji wejściowej. Dbamy tylko o długość sekwencji, a nie jej zawartość. Mimo że cyfry nie są używane, polecenie będzie nadal wykonywane dziesięć razy.
Inny przykład:
parallel -n0 echo -n 'x' ::: {1..5}
Jak to działa:
- Sekwencja wprowadzania jest wbudowana.
{1..5}
tworzy rozdzielany spacjami ciąg cyfr od jednego do pięciu.
-n0
ignoruje wartości sekwencji ( 'x'
zamiast tego za każdym razem powtarzamy ciąg znaków ).
- Wynik:
xxxxx
Porównać do:
parallel echo -n ::: {1..5}
Jak to działa:
- Sekwencja wprowadzania jest wbudowana.
{1..5}
tworzy rozdzielany spacjami ciąg cyfr od jednego do pięciu.
- Każda wartość z sekwencji wejściowej jest używana jako argument dla
echo
. Zamówienie nie jest gwarantowane.
- Wyjście:
43215
. Może to być dowolne zamówienie.