Паралелно изпълнение в bash

Блог за Linux, Bash и други информационни технологии

изпълнение
В повечето черупки командите се изпълняват последователно по подразбиране. И това по принцип е нормално. Тъй като човек взаимодейства със системата последователно, обикновено няма нужда да изпълнява няколко команди паралелно. Bash не е изключение в това отношение. Но когато се автоматизира, възможността за паралелно изпълнение може да бъде полезна. Нека да видим как да организираме паралелно изпълнение в bash.

Използване на фона

За да се организира паралелната работа на няколко програми, той често се използва за стартиране във фонов режим, като се използва знакът амперсанд - &. Например:

Командата ще се изпълнява във фонов режим и командите могат да се изпълняват от текущата обвивка. По този начин вече е възможно да се паралелизират някои действия. Можете да изпълните няколко команди наведнъж по този начин и да изчакате, докато всички те работят. Командата за изчакване се използва за изчакване за стартиране на дъщерни процеси. Тази команда, без параметри, чака всички дочерни процеси да завършат, така че за да изчакате 5 процеса да завършат, ще трябва да изпълните командата само 1 път. По принцип това лесно става чрез цикъл. Например по този начин:

И резултатът от този скрипт:

Както можете да видите, на пръв поглед идентични команди, изпълнени в различен ред, отколкото ние ги изпълнихме. Нека видим сега общото време за изпълнение на скрипта.

Общото време за изпълнение на скрипта е малко повече от 10 секунди, което доказва, че нашите команди са били изпълнявани паралелно, а увеличаването на времето за изпълнение показва, че те не са стартирани по едно и също време, между стартирането е имало малки таймаути. Но те бяха много малки, така че стартирането на пет подобни процеса отнема почти същото време като стартирането на един.