Skriptovanie v UNIX shelli: paralelné procesy

Prečo paralelné procesy?

Štandardne sa shell správa tak, že spracúva sekvenčne všetky riadky shellovského skriptu. Rovnako, oddelenie príkazov bodkočiarkou zaručuje sekvenčné (sériové) spracovanie. Čo ale ak máme napr. štvorjadrový procesor a chceme, aby sa shellovský skript vykonával súčasne na všetkých štyroch jadrách - multithreading? Poďme sa na to mrknúť.

Ako na paralelné procesy?

Existuje jednoduchý spôsob, ako urobiť paralelné procesy po unixom. Stačí použiť „fintu“ spustenia programov na pozadí talk, že za existujúcim príkazom napíšeme ampresand &. Ak takto spustíte príkazy, shell nečaká, kým sa príkaz na pozadí ukončí, máte výhodu paralelného spracovania.

Ako si ich odsledovať?

Ako odsledujem, či mi skončili všetky príkazy, ktoré som spustil na pozadí? Po spustení príkazu na pozadí je treba uchovať obsah premennej $!, do ktorej shell automaticky zaznamenáva PID (Process ID) posledného skriptu, ktorý bol spustený na pozadí v tejto inštancii shellu. Ak mám takýchto procesov viac, je možné všetky postupne uchovať do shellovského poľa.

Ako čakať, kedy skončia paralelné procesy?

Stačí na to jednoduchá slučka until, do ktorej uvedieme, že bude skript „spať“ až dovtedy, kým sa neukončia všetky procesy zo shellovského poľa.

 

Marián Knězek

 

Súvisiace články: