Skip to main content

Bash Subshells at Parallel Processing

Paano Magdrive ng Manual Transmission (Abril 2025)

Paano Magdrive ng Manual Transmission (Abril 2025)
Anonim

Ang isang shell ay isang pangunahing interface para sa pagpasok ng mga command sa isang sistema ng Linux. Sa pamamagitan nito, maaari kang magpasok ng direktang utos o tukuyin ang isang file (script) na naglalaman ng isang pagkakasunud-sunod ng mga utos upang maisagawa. Ang mga shell ay nakaayos sa isang hierarchy, at ang anumang shell ay maaaring lumikha ng isang bagong shell. Ang bagong shell ay itinuturing na isang proseso ng bata-isang subshell-ng shell ng magulang na lumilikha nito.

Sa pamamagitan ng default, ang subshell ay nakasalalay sa magulang nito sa diwa na kung natatapos ang proseso ng magulang, tinatapos din ang subshell. Anumang output ay naipasa mula sa subshell sa parent shell.

Paano Gumawa ng Subshell

Sa isang script ng Bash shell, lumikha ka ng subshell gamit ang notipikasyon ng panaklong:

Sa halimbawa, ang habang loop ay nakapaloob sa panaklong, na nagiging sanhi ito upang maisagawa sa isang subshell ng shell kung saan ang script file ay naisakatuparan.

Pagpapatakbo ng Subshell sa Background

Maliban kung tukuyin mo na ang subshell ay papatayin sa background, ang hininga ng magulang ay naghihintay para matapos ang subshell bago magpatuloy sa natitirang bahagi ng script. Gayunpaman, kung nais mong patakbuhin ang subshells magkapareho, pinapatakbo mo ang mga ito sa background, na kung saan ay natapos sa mga character na ampersand sumusunod sa expression subshell, tulad ng ipinapakita dito:

Pagpapatakbo ng Maramihang Mga Subshell sa Parallel

Kung lumikha ka ng maramihang mga subshell bilang mga proseso ng background, maaari kang magpatakbo ng mga gawain nang magkapareho. Karaniwan, ang operating system ay gumagamit ng iba't ibang mga processor o core para sa bawat proseso at subprocess, ipagpapalagay na mayroong hindi bababa sa maraming mga processor o mga core na may mga proseso. Kung hindi, ang mga gawain ay itinalaga sa parehong mga processor o core. Sa kasong iyon, patuloy na lumilipat ang processor o core sa pagitan ng mga nakatalagang gawain hanggang makumpleto ang mga gawain. Ang susunod na halimbawa ay may dalawang subprocesses. Ang unang isa ay binibilang mula 1 hanggang 99, at ang pangalawang isa mula 1000 hanggang 1099.

Gamitin ang pahayag ng paghihintay upang sabihin sa proseso ng magulang upang maghintay para sa mga subprocesses upang matapos bago magpatuloy sa ibang bahagi ng script:

Gumagamit para sa Subshells

Ang mga subshell ay kapaki-pakinabang kapag kailangan ng mga utos na isagawa sa isang partikular na kapaligiran o direktoryo. Kung ang bawat command ay naisakatuparan sa isang iba't ibang mga subshell, walang panganib na variable na mga setting ay halo-halong up. Sa pagkumpleto, ang mga setting at ang kasalukuyang direktoryo ay hindi kailangang maibalik, dahil ang kapaligiran ng proseso ng magulang ay hindi naapektuhan ng alinman sa mga subprocesses nito.

Maaaring gamitin ang mga subshell sa mga kahulugan ng pag-andar upang maisagawa ang mga ito nang maraming beses sa iba't ibang mga parameter.