Linux bash - как запустить список двоичных файлов, сгенерированных из другого скрипта?

367
motam79

У меня есть скрипт, который генерирует список двоичных файлов, которые будут выполнены:

\home\joe\bin\script1 \home\joe\bin\script2 \home\joe\bin\script3 .. 

Вопрос 1: Как я могу запустить все эти файлы один за другим из командной строки? Один из способов сделать это - поместить список двоичных файлов во временный файл temp.shи запустить его .sh. Возможно ли это сделать без создания временного .shфайла?

Вопрос 2: Как я могу запустить все эти файлы параллельно?

1

2 ответа на вопрос

1
yarl

антислеш в твоем примере должно быть косой чертой, наверное

yarl@nb$ pwd /tmp yarl@nb$ cat list  #!/bin/sh  echo /tmp/foo echo /tmp/bar yarl@nb$ cat foo #!/bin/sh  echo I say foo sleep 2 echo I say foo yarl@nb$ cat bar #!/bin/sh  echo And I say bar sleep 2 echo And I say bar yarl@nb$ cat parallel  #!/bin/sh  ./list | while read cmd; do $cmd & done 

Бежать:

./list | sh 

в параллели:

./parallel 

Обратите внимание, что если в списке есть n файлов, то это n заданий, которые выполняются параллельно. Если вы хотите контролировать это, используйте параллельный счетчик или GNU или что-то еще. см. https://stackoverflow.com/questions/5547787/running-shell-script-in-parallel

1
Ole Tange

Используя GNU Parallel:

Вопрос 1:

list_generator_program | parallel -j1 

Вопрос 2:

list_generator_program | parallel 

Это будет выполнять одно задание на ядро ​​процессора параллельно.

Похожие вопросы