1

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

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

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

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

2 ответа2

1

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

Вопрос 1:

list_generator_program | parallel -j1

Вопрос 2:

list_generator_program | parallel

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

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .