כיצד לשלוח ולתפוס SIGTERM ב-Bash ו-Python

Kyzd Lslwh Wltpws Sigterm B Bash W Python



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

כשאתה עובד עם Bash ו-Python, אתה יכול לשלוח את האות SIGTERM כדי לסיים את תהליך הריצה ברכות. פוסט זה עוסק בשליחת ותפיסת SIGTERM ב-Bash ו-Python.

מה זה סימן TERM

למערכות יוניקס שלוש קטגוריות של אותות: מערכת, מכשיר ואותות מוגדרים על ידי המשתמש. לכל אות יש ערך שלם. אתה יכול להפעיל את האות על ידי ציון שמו או הערך השלם שלו.







SIGTERM הוא אות עם ערך שלם של 15. הוא מבוצע כאשר אתה רוצה לסיים תהליך רץ ברכות. להלן התחביר לשימוש ב-SIGTERM ב-Bash:



להרוג את טווח היעד < PID >

אוֹ

להרוג - חֲמֵשׁ עֶשׂרֵה < PID >

אתה יכול לבדוק את כל האותות הזמינים באמצעות הפקודה הבאה:



להרוג -ל





כיצד לשלוח ולתפוס SIGTERM ב-Bash ו-Python

ייתכן שתרצה לשלוח ולתפוס את SIGTERM ב-Bash ו-Python במקרים שונים. כאשר אתה מפעיל את תוכנית Bash או Python שלך, אתה יכול להפעיל את האות SIGTERM כדי להרוג את התוכנית. יש לנו דוגמאות שונות כדי להבין איך אתה שולח ותופס SIGTERM ב-Bash ו-Python.

1. שימוש בסקריפט Python

בעת שימוש ב- Python 1.4 ובגירסאות האחרונות, אתה יכול להשתמש בספריית האותות כדי לשלוח ולתפוס את SIGTERM. ייבא את הספרייה לתוכנית שלך כדי להגדיר כיצד התוכנית שלך צריכה ללכוד ולהגיב לאותות שונים. ספריית האותות מאפשרת לך ליצור מטפל באותות כדי לדווח על המספר השלם של האות שהתקבל. לאחר מכן תוכל לרשום את האות שנלכד ולקבל את המידע על התהליך הנוכחי כגון ה-PID שלו. בואו ניתן דוגמה.



יש לנו סקריפט Python שתופס את המספר השלם של האות שנשלח. יתר על כן, הוא תופס את ה-PID של התהליך הנוכחי.

בתמונה הבאה, אנו מבצעים את הסקריפט של Python ויש לנו לולאת while שפועלת כל כמה שניות. בטרמינל אחר, נוכל לשלוח את האות SIGTERM כדי להרוג את התהליך על ידי ציון ה-PID שנקבל מביצוע הסקריפט של Python:

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

אתה יכול גם לבצע את עבודת Python שלך באמצעות התחביר הבא:

פיתון3 < תסריט/עבודה > &

בשונה מהשיטה הראשונה, כאשר אנו שולחים את ה-SIGTERM באמצעות אפשרות זו, אנו יכולים לראות שמזהה העבודה מודפס כאשר העבודה מתחילה לבצע. אחרי שאנחנו הורגים את זה, אנחנו מקבלים את הסטטוס 'בוצע'. ניתן לשלוח את ה-SIGTERM על ידי ציון שמו או המספר השלם שלו.

2. שימוש בסקריפט Bash

אתה יכול להשתמש בפקודה 'מלכודת' כדי לתפוס אות בעת ביצוע סקריפט Bash. בדוגמה זו, הוספנו את הפקודה 'מלכודת' כדי לתפוס את האות SIGTERM. הסקריפט הוא לולאה 'for' לביצוע הפקודה 'תאריך' אלף פעמים אם לא נשלח אות SIGTERM.

בעת ביצוע סקריפט Bash, אתה יכול לשלוח את האות SIGTERM על ידי לחיצה על Ctrl + Z מקשי מקלדת. הפקודה 'מלכודת' לוכדת את האות המשודר, והלולאת 'ל' תפסיק לפעול. תקבל פלט המאשר שהעבודה הפועלת קיבלה אות SIGTERM ונעצרה.

ככה אתה שולח ותופס את SIGTERM ב-Bash.

סיכום

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