Skip to main content

Bash Subshells og Parallel Processing

Mercedes ABS Sensor/Wheel Speed Sensor Troubleshoot and Replace (April 2025)

Mercedes ABS Sensor/Wheel Speed Sensor Troubleshoot and Replace (April 2025)
Anonim

En shell er en grundlæggende grænseflade til indtastning af kommandoer på et Linux-system. Med det kan du indtaste en kommando direkte eller angive en fil (script), der indeholder en række kommandoer, der skal udføres. Skaller er organiseret i et hierarki, og enhver skal kan skabe en ny skal. Den nye skal betragtes som en børneproces - en underskal - af moderskallen, der skaber den.

Som standard er en underskal afhængig af sin overordnede i den forstand, at hvis moderprocessen afslutter, slutter subshellet også. Enhver output sendes fra underskallen til moderskallen.

Sådan opretter du en underskal

I et Bash-shell-script opretter du en subshell ved hjælp af parentes notationen:

I eksemplet er den tidssløjfe lukket i parentes, hvilket får den til at blive udført i en delskal af skallen, hvori scriptfilen udføres.

At køre et underskal i baggrunden

Medmindre du angiver, at underskalningen skal udføres i baggrunden, venter moderskallen på, at underskallet skal afslutte, inden du fortsætter med resten af ​​scriptet. Hvis du imidlertid ønsker at køre subshells parallelt, kører du dem i baggrunden, som opnås med ampersand-karakteren efter subshell-udtrykket, som vist her:

Kører flere subshells parallelt

Hvis du opretter flere subshells som baggrundsprocesser, kan du køre opgaver parallelt. Typisk bruger operativsystemet forskellige processorer eller kerner til hver proces og delproces, forudsat at der er mindst lige så mange processorer eller kerner som der er processer. Ellers er opgaver tildelt til samme processorer eller kerner. I så fald skifter processoren eller kernen løbende mellem de tildelte opgaver, indtil opgaverne er afsluttet. Det næste eksempel har to delprocesser. Den første tæller fra 1 til 99, og den anden er fra 1000 til 1099.

Brug ventetilstanden til at fortælle forældreprocessen at vente på, at delprocesserne skal afslutte, inden du fortsætter med resten af ​​scriptet:

Anvendes til Subshells

Subshells er nyttige, når kommandoer skal udføres i et bestemt miljø eller bibliotek. Hvis hver kommando udføres i et andet subshell, er der ingen risiko for, at variable indstillinger bliver blandet op. Efter færdiggørelsen behøver ikke indstillingerne og det aktuelle bibliotek genoprettes, da omgivelserne i overordnet proces ikke påvirkes af nogen af ​​dens underprocesser.

Subshells kan bruges i funktionsdefinitioner, så de kan udføres flere gange med forskellige parametre.