Skriptování v UNIX shellu: paralelní procesy

Zabezpečenie Linuxových / UNIXových serverov

Proč paralelní procesy?

Shell se standardně chová tak, že zpracovává sekvenčně všechny řádky shellovského skriptu. Stejně tak oddělení příkazů středníkem zaručuje sekvenční (sériové) zpracování. Co ale když máme např. čtyřjádrový procesor a chceme, aby se shellovský skript prováděl současně na všech čtyřech jádrech - multithreading? Pojďme se na to mrknout.

Jak na paralelní procesy?

Existuje jednoduchý způsob, jak udělat paralelní procesy po unixem . Stačí použít „fintu“ spuštění programů na pozadí talk, že za existujícím příkazem napíšeme ampresand &. Pokud takto spustíte příkazy, shell nečeká, až se příkaz na pozadí ukončí, máte výhodu paralelního zpracování.

Jak si je vysledovat?

Jak odsleduji, jestli mi skončily všechny příkazy, které jsem spustil na pozadí? Po spuštění příkazu na pozadí je třeba uchovat obsah proměnné $!, do které shell automaticky zaznamenává PID (Process ID) posledního skriptu, který byl spuštěn na pozadí v této instanci shellu. Pokud mám takových procesů více, lze všechny postupně uchovat do shellovského pole.

Jak čekat, kdy skončí paralelní procesy?

Stačí k tomu jednoduchá smyčka until, do které uvedeme, že bude skript „spát“ až do doby, než se ukončí všechny procesy ze shellovského pole.

Marián Knězek

 

Súvisiace články: