выполнить снаряд с найти пистолет на фоне - PullRequest
0 голосов
/ 12 мая 2019

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

result.sha
result.shb
result.shc
...

приведенный ниже скрипт, который он нашел, выполняет все оболочки с совпадающим регистром, но как мне заставить каждый из них работать в фоновом режиме параллельно

find . -type f -name 'result.*' -exec sh {} \;

Я пробовал это, но это не работает:

find . -type f -name 'result.*' -exec sh {} \;&

Ответы [ 2 ]

3 голосов
/ 13 мая 2019

Более эффективно запускать sh только один раз для пакета find результатов и позволять ему запускать столько подпроцессов, сколько ему нужно.

find . -type f -name 'result.*' -exec sh -c 'for arg do . "$arg" & done' _ {} +

. "$arg" & разветвляет копиюуже работающий интерпретатор и запускает код внутри "$arg", избегая дополнительных затрат на запуск интерпретатора.

1 голос
/ 12 мая 2019

Я думаю, что ваше решение запускает программу поиска в фоновом режиме, а не выполняет каждый сценарий оболочки в фоновом режиме.Я попробовал себя с утилитой поиска, но не смог заставить его работать.Однако следующий сценарий оболочки сделает то, что вам нужно.

#!/bin/bash
for prog in result.*
do
    sh $prog &
done
exit 0

или эквивалентная инструкция в 1 строке

...