В начале Makefile:
MAKEFLAGS+="j"
Он не будет принимать числовые аргументы для любой версии GNU Make до 4.2 .После версии 4.2 вы можете выполнить :
MAKEFLAGS+="j2"
Для версий более ранних, чем 4.2, если вам не хватает некоторых заданий, вы можете запускать их только по одному за раз с помощью flock
от util-linux-ng.Например, утилита convert
от ImageMagick будет использовать все ресурсы, которые она может получить, когда она используется для оптимизации изображений в соответствии с рекомендациями Google , поэтому нет смысла запускать ее параллельно.
%.min.jpg: %.jpg
@flock --wait 600 Makefile convert $< -sampling-factor 4:2:0 -strip $@
Важно установить длительное время ожидания, поскольку make все равно будет выполнять большинство этих команд параллельно.Следовательно, время ожидания должно быть таким, как время выполнения самой глубокой очереди.Если у вас восемь ядер, а для оптимизации восьми больших изображений требуется минута, вы должны установить время ожидания не менее минуты.
С сотнями ядер и огромными изображениями шести сотен секунд, указанных выше, может быть недостаточно.