Baş skriptlərdən istifadə etmək üçün necə istifadə etmək olar?

Arxa plana paralel olaraq qoşulmaq üçün təlimatlar necə verilir?

Kabuk, Linux sistemindəki əmrləri daxil etmək üçün əsas interfeysdir. Bununla birbaşa komanda daxil edə bilərsiniz və ya icra ediləcək bir sıra əmrləri ehtiva edən bir fayl (skript) müəyyən edə bilərsiniz. Kabuklar hiyerarşidə təşkil edilir və hər hansı bir qabıq yeni bir qabıq yarada bilər. Yeni qabıq bir uşaq prosesi hesab olunur - bir subhell - onu yaradan ana kabuk.

Varsayılan olaraq, bir subshell ana valideyninə bağlıdır ki, valideyn prosesi ləğv edildikdə, subshell də sona çatır. Hər hansı bir çıxış subhelldən üst qabağa keçir.

Bir Subshell yaratmaq üçün necə

Bir Bash kabuk skriptində, parantez qeydindən istifadə edərək, bir alt pəncərə yaradın:

# "/ bin / bash echo" [$ count -le 99] "echo" $ count "sleep 1 ((count ++)))" echo "

Məsələn, müddət döngüsü parantezdə yerləşdirilir ki, bu da script faylının yerinə yetirildiyi qabığın alt-üst hissəsində icra edilməsinə səbəb olur.

Arxa planda bir Subshell qaçış

Üstünlük arxa planda icra ediləcəyini təyin etmədikdə, ana kabuk, ssenarinin qalan hissəsi ilə davam etməzdən əvvəl, subshell üçün sona çatmasını gözləyir. Buna baxmayaraq, paralel olaraq subshellləri çalıştırmak isterseniz, aşağıda göstərildiyi kimi, altbaşlı ifadeden sonra ampersand karakterle arka planda çalıştırabilirsiniz:

"$ count" yuxu 1 ((count ++)) tamamlandı və "tamamlandı" echo "# subscribe" əvvəli (count = 1 [$ count -le 99]

Paralel olaraq birdən çox alt-keçid qaçış

Arxa proseslər kimi bir neçə subshells yaratsanız, vəzifələri paralel olaraq həyata keçirə bilərsiniz. Tipik olaraq, əməliyyat sistemi proseslər olduğu üçün ən azı çox prosessor və ya çekirdek olduğu halda, hər proses və subprocess üçün müxtəlif prosessorları və ya nüvələrdən istifadə edir. Əks təqdirdə, vəzifələr eyni prosessorlara və ya nüvələrə verilir. Bu halda, prosessor və ya çekirdek vəzifələri tamamlanana qədər təyin edilmiş vəzifələr arasında davamlı olaraq dəyişir. Növbəti nümunədə iki subprocesses var. Birincisi 1-dən 99-a, ikincisi isə 1000-dən 1099-a qədərdir.

"$ count" yuxu 1 ((count ++)) yerinə yetirilir) & (count = 1000 = [$ count -le 1099] echo "$ count" sleep 1 ((count ++)) tamamlandı) & echo "Finished"

Ana prosesin subprocesslərin scriptin qalan hissəsi ilə işə başlamazdan əvvəl bitməsini gözləməsi üçün xəbərdarlıq formasını istifadə edin:

"$ count" yuxu 1 ((count ++)) yerinə yetirilir) & (count = 1000 = [$ count -le 1099] echo "$ count" sleep 1 ((count ++)) görülən & echo echo "Finished"

Subshells üçün istifadə edir

Komutların müəyyən bir mühitdə və ya kataloqda yerinə yetirilməsi lazım olduqda subshells faydalıdır. Hər komanda fərqli bir subshelldə icra edilərsə, dəyişən parametrlər qarışdırılacaq bir risk yoxdur. Tamamlanmasından sonra, parametrlər və cari qovluğun bərpa edilməsinə ehtiyac yoxdur, çünki ana prosesin mühiti onun subprocesseslərindən birinə təsir göstərmir.

Subshells müxtəlif parametrləri ilə bir neçə dəfə icra edilə bilməsi üçün funksiya təriflərində istifadə edilə bilər.