לערנען ווי פּראָפּילז ראַן סובסעללס ניצן באַש סקריפּץ

ווי צו ינסטראַקט סובסעללס צו לויפן אין פּאַראַללעל אין די הינטערגרונט

א שאָל איז אַ גרונט צובינד פֿאַר קומט קאַמאַנדז אויף אַ לינוקס סיסטעם. מיט אים, איר קענען אַרייַן אַ באַפֿעל גלייַך אָדער ספּעציפיצירן אַ טעקע (שריפט) אַז כּולל אַ סיקוואַנס פון קאַמאַנדז צו זיין עקסאַקיוטיד. שעלז זענען אָרגאַניזירט אין אַ כייעראַרקי, און קיין שאָל קענען שאַפֿן אַ נייַ שאָל. דער נייַ שאָל איז באטראכט אַ קינד פּראָצעס-אַ סובשעלל-פון די פאָטער שאָל אַז קריייץ עס.

דורך פעליקייַט, אַ סובסעלל איז אָפענגיק אויף זייַן פאָטער אין דעם זינען אַז אויב די פאָטער פּראָצעס איז טערמאַנייטיד, די סובסעלל אויך טערמינייץ. קיין רעזולטאַט איז דורכגעגאנגען פון די סובסעלל צו די פאָטער שאָל.

ווי צו שאַפֿן אַ סובשעלל

אין אַ שאַפע שעל שריפט, איר שאַפֿן אַ סובשעלל ניצן די פּאַרענטהעסיס נאָטאַטיאָן:

# ech / bash echo "Before starting subshell" (count = 1 while [$ count -le 99] do echo "$ count" sleep 1 ((count ++)) done) echo "Finished"

אין דעם בייַשפּיל, די בשעת שלייף איז אַרייַנגערעכנט אין פּאַרעהעסיס, וואָס זאַט עס צו זיין עקסאַקיוטאַד אין אַ סובשעלל פון די שאָל אין וואָס די שריפט טעקע איז עקסאַקיוטאַד.

פליסנדיק אַ סובסעלל אין די הינטערגרונט

אויב איר ספּעציפיצירט אַז די סובסעלל איז עקסאַקיוטאַד אין דער הינטערגרונט, די פאָטער שאָל ווייזט פֿאַר די סובסעלל צו ענדיקן איידער פאָרזעצן מיט די ריסט פון דעם שריפט. אָבער, אויב איר ווילן צו לויפן פּאַראַמעטערס, איר לויפן זיי אין די הינטערגרונט, וואָס איז אַקטשאַוואַלי מיט די אַמפּערז און די פאלגענדע די סובסעלל אויסדרוק, ווי געוויזן דאָ:

# ($ 1) [$ count -le 99] טאָן "$ count" שלאָף 1 ((count ++)) done) & echo "Finished"

פליסנדיק מער ווי איין סובסעללס אין פּאַראַללעל

אויב איר שאַפֿן קייפל סובסעללס ווי הינטערגרונט פּראַסעסאַז , איר קענען לויפן טאַסקס אין פּאַראַלעל. טיפּיקאַללי, די אַפּערייטינג סיסטעם ניצט פאַרשידענע פּראַסעסערז אָדער קאָרעס פֿאַר יעדער פּראָצעס און סובפּראָסעסס, אַסומינג עס זענען בייַ מינדסטער ווי פילע פּראַסעסערז אָדער קאָרעס ווי עס זענען פּראַסעסאַז. אַנדערש טאַסקס זענען אַסיינד צו די זעלבע פּראַסעסערז אָדער קאָרעס. אין דעם פאַל, די פּראַסעסער אָדער האַרץ קאַנטיניואַסלי סוויטשאַז צווישן די אַסיינד טאַסקס ביז די טאַסקס זענען געענדיקט. דער ווייַטער בייַשפּיל האט צוויי סובפּראָצעס. דער ערשטער איינער קייט פון 1 צו 99, און די רגע איינער פון 1000 צו 1099.

# $ 1 $ ($ 1) [$ count -le 99] "$ count" 1 ((count ++)) done) & (count = 1000 while [$ count -le 1099] טאָן עקאָו "$ רעכענען" שלאָף 1 ((קימאַט + +)) געטאן) & עאַקאָ "פאַרטיק"

ניצן די וואַרטן ויסזאָגונג צו זאָגן די פאָטער פּראָצעס צו וואַרטן פֿאַר די סובפּראָסעססעס צו ענדיקן איידער פּראַסידינג מיט די רעשט פון די שריפט:

# $ 1 $ ($ 1) [$ count -le 99] "$ count" 1 ((count ++)) done) & (count = 1000 while [$ count -le 1099] טאָן עקאָו "$ ציילן" שלאָף 1 ((קימע + +)) געטאן) & וואַרטן ווידער "פאַרטיק"

ניצט פֿאַר סובסעללס

סובסעללס זענען נוציק ווען קאַמאַנדז דאַרפֿן צו זיין עקסאַקיוטאַד אין אַ באַזונדער סוויווע אָדער וועגווייַזער. אויב יעדער באַפֿעל איז עקסאַקיוטאַד אין אַ אַנדערש סובשעל, עס איז קיין ריזיקירן אַז בייַטעוודיק סעטטינגס וועט זיין געמישט אַרויף. אויף קאַמפּלישאַן, די סעטטינגס און דעם קראַנט וועגווייַזער טאָן ניט דאַרפֿן צו זיין געזונט, ווי די סוויווע פון ​​די עלטערן פּראָצעס איז נישט אַפעקטאַד דורך קיין סובפּראָצעס.

סובסעללס קענען זיין געניצט אין פונקציאָנירן זוך אַזוי אַז זיי קענען זיין עקסאַקיוטאַד קייפל מאל מיט פאַרשידענע פּאַראַמעטערס.