Параллельные тесты в bash, используя bash или параллельный GNU
У меня есть тесты grunt, он проходит в Дженкинсе на машине MAC, и мне нужно распараллелить таблицу уровней линейного оператора и спецификации линейного оператора после того, как они запустят дистрибутив.
lineman grunt spe
lineman grunt spe-table
lineman grunt distributive
Я пытался сделать
lineman grunt spe >spe.out 2>spe.err &
lineman grunt spe-table >spe-table.out 2>spe-table.err &
lineman grunt distributive
Это работает, но когда запускается тест, также запускается распределительная задача, и это не очень хорошее решение.
В качестве хорошей идеи я пытаюсь запустить параллельный GNU следующим образом:
parallel -j 2 "lineman grunt spe" "lineman grunt spe-table"
lineman grunt dist
Но ничего не произошло, просто посмотрите эту строку в выводе Дженкинса. Как я могу решить это?
2 ответа
Вы можете просто использовать wait
команда после первых двух команд - это заставит оболочку дождаться завершения всех фоновых задач, прежде чем продолжить.
lineman grunt spe >spe.out 2>spe.err &
lineman grunt spe-table >spe-table.out 2>spe-table.err &
wait
lineman grunt distributive
В этом случае последняя команда не будет выполнена, пока не завершены оба набора тестов.
parallel ::: "lineman grunt spe" "lineman grunt spe-table"
или же:
parallel lineman grunt ::: spe spe-table
Это одно из самых простых применений GNU Parallel, так что, насколько я понимаю, вы не следовали руководству для читателя в "параллельной манере":
Руководство читателя
Начните с просмотра вступительных видеороликов для быстрого ознакомления: http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Затем посмотрите на ПРИМЕРЫ после списка ВАРИАНТОВ. Это даст вам представление о том, на что способен параллельный GNU.
Затем проведите час, прогуливаясь по учебнику (man parallel_tutorial). Ваша командная строка будет любить вас за это.
Наконец, вы можете обратиться к остальной части этого руководства, если у вас есть особые потребности, которые еще не были рассмотрены.