המתן פקודה ב- Linux

Wait Command Linux



לַחֲכוֹת היא פקודה מובנית של לינוקס שמחכה להשלמת כל תהליך הפעלה. לַחֲכוֹת הפקודה משמשת עם מזהה תהליך מסוים או מזהה עבודה. כאשר מספר תהליכים פועלים במעטפת אז רק מזהה התהליך של הפקודה האחרונה יוכר על ידי המעטפת הנוכחית. אם פקודת ההמתנה מבוצעת הפעם, אז היא תחול על הפקודה האחרונה. אם לא יינתן מזהה תהליך או מזהה עבודה עם פקודת המתנה, הוא יחכה להשלמת כל תהליכי הצאצא הנוכחי ויחזיר את מצב היציאה.

ערך מצב היציאה של פקודת ההמתנה תלוי בפקודה המצוינת באופרנד האחרון שצוין. כאשר כל תהליך מסתיים בצורה לא תקינה, מצב היציאה יהיה גדול מ- 128 והוא יהיה שונה מערכי סטטוס היציאה של פקודות אחרות. לַחֲכוֹת הפקודה יוצאת עם הערך 0 כשהיא מתקשרת ללא אופרנדים וכל מזהי התהליכים הידועים על ידי המעטפת הנוכחית הסתיימו. אם פקודת ההמתנה מזהה שגיאה כלשהי היא מחזירה כל ערך מ -1 עד 126. אם מזהה התהליך האחרון אינו ידוע אז פקודת ההמתנה יוצאת עם הערך 127. כיצד תוכל להשתמש בפקודת ההמתנה ב- Linux מוצג במדריך זה.







דוגמה 1: שימוש בפקודת המתנה למספר תהליכים

לאחר ביצוע התסריט הבא, שני תהליכים יפעלו ברקע ומזהה התהליך של פקודת ההד הראשונה נשמר במשתנה $ process_id. כאשר פקודת ההמתנה מבוצעת באמצעות $ process_id אז הפקודה הבאה תחכה להשלמת המשימה של פקודת ההד הראשונה. פקודת ההמתנה השנייה משמשת עם ' $! 'וזה מצביע על מזהה התהליך של תהליך הריצה האחרון. ' $? 'משמש לקריאת ערך הסטטוס של פקודת ההמתנה.



#!/bin/bash
זרק 'בדיקת המתנה פקודה 1' &
process_id=$!
זרק 'בודק פקודה לחכות 2' &
לַחֲכוֹת $ process_id
זרקעבודה1יצא עם סטטוס$?
לַחֲכוֹת $!
זרקעבודה2יצא עם סטטוס$?

תְפוּקָה:



$לַחֲבוֹטwait1.sh





דוגמה 2: בדוק את פקודת ההמתנה לאחר שימוש בפקודת kill

בתסריט הבא, פקודת ההמתנה מבוצעת לאחר סיום התהליך. פקודת sleep פועלת כתהליך רקע ופקודת kill מבוצעת כדי לסיים את תהליך הריצה. לאחר פקודת ההמתנה ההיא מבוצעת עם מזהה התהליך של התהליך שהסתיים. הפלט יציג את מזהה התהליך של התהליך שהסתיים.

#!/bin/bash
זרק 'בודק פקודת המתנה'
לִישׁוֹן עשרים &
pid=$!
לַהֲרוֹג $ pid
לַחֲכוֹת $ pid
זרק $ pidהופסק.

תְפוּקָה:



$לַחֲבוֹטwait2.sh

דוגמה 3: בדוק את ערך סטטוס היציאה

בתסריט הבא, הפונקציה חשבון() נקרא בשני ערכי טיעון. נדון בתחילת ההדרכה שאם פקודת ההמתנה תתבצע בהצלחה ערך היציאה יהיה 0 ואם פקודת ההמתנה תזהה שגיאה כלשהי היא תחזיר כל ערך בין 1 ל -126. לאחר הפעלת הסקריפט, אם תעביר 0 כארגומנט שני ערך ואז פקודת ההמתנה מסתיימת בהצלחה ואם אתה עובר ערך יותר מאפס אז הוא מסתיים ללא הצלחה.

#!/bin/bash
פוּנקצִיָהחשבון()
{
זרק 'לישון למשך 1 שניות'
לִישׁוֹן $ 1
יְצִיאָה 2 $
}
חשבון$ 1 2 $ &
ב=$!
זרק 'בודקים את הסטטוס'
לַחֲכוֹת $ b && זרקבסדר|| זרקלא בסדר

תְפוּקָה:

$לַחֲבוֹטwait3.sh3 0
$לַחֲבוֹטwait3.sh3 5

מקווה, הדרכה זו תעזור ללמוד את פקודת השימוש בהמתנה כראוי. יש פקודה נוספת ב- Linux, בשם לִישׁוֹן לחכות לכמות הפעמים המסויימת אך ישנם כמה הבדלים בין הפקודות הללו. אם אתה מעוניין לדעת על פקודת שינה אז אתה יכול לבקר בקישור הזה.