אות - Linux/Unix Command
לינוקס תומך הן באותות אמינים של POSIX (להלן, "אותות סטנדרטיים") והן באותות POSIX בזמן אמת.
שימוש באותות בלינוקס
אותות במערכת לינוקס אומרים את מערכת הפעלה כיצד לטפל בתוכנית או תהליך פועל. כאשר אתה סוגר תוכנית כרגיל, זה למעשה שולח אות למערכת שאומרת לה לסגור את התוכנית. אתה יכול לעשות זאת גם ידנית.
התחל בחיפוש אחר תהליך שאתה רוצה לסגור. אתה יכול לעשות זאת עם:
ps aux | grep -i
אז, אם אתה רוצה לסגור את Firefox משורת הפקודה, הזן:
ps aux | grep -i firefox
תקבל רשימה ענקית של תהליכים פיירפוקס כי זה יישום מרובה הליכי. חפש את תהליך הבסיס עבור /usr/lib/firefox. בדרך כלל זה הראשון.

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

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

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

כן, יש הרבה. למרבה המזל, לא תיגע ברוב המכריע, אלא אם תתחיל לפתח או לכתוב סקריפטים לניהול מערכת. לעתים קרובות יותר מאשר לא, כאשר SIGTERM לא מצליח לעצור תהליך לא מגיב, אתה הולך לחפש את המקבילה ללינוקס של Ctrl+Alt+Delete, SIGKILL.
בניגוד למנהל התהליך הידוע לשמצה Ctrl+Alt+Delete, SIGKILL למעשה עובד. למעשה, זה נועד להתעלם מכל הגורמים האחרים ולהוריד את התהליך הפוגע, לא משנה מה. זה גם אומר ש-SIGKILL יכול להיות מסוכן אם אתה טועה בתהליך.
התחל בדיוק באותו אופן, על ידי חיפוש מזהה התהליך.
pgrep firefox
כעת, במקום להשתמש ב-SIGTERM כדי לעצור את התהליך, השתמש ב-SIGKILL ההרסני יותר.
להרוג -SIGKILL 4790
גם אם התהליך נעול לחלוטין, הוא אמור להיסגר תוך מספר שניות.

בדיוק כמו עם SIGTERM, יש מספר שמתאים ל-SIGKILL. במקרה הזה, זה 9.
להרוג -9 4790
בדיוק כמו בעבר, התהליך אמור להיות מת כמעט מיד.
אתה גם צריך להיות מודע SIGINT. זוהי פסיקה מהמקלדת, וזו יותר פקודה ממה שאתה חושב בשורת הפקודה. כשאתה לוחץ Ctrl+C כדי לעצור תהליך מחלון מסוף, אתה למעשה מנפיק SIGINT. הקוד שלו הוא 2, ואתה יכול להשתמש בו בדיוק כמו האחרים עם פקודת ההרוג.
להרוג -2 4790
זה לא כל כך נפוץ מכיוון שיש לך הרבה יותר סיכוי ללכת עם Ctrl+C, אבל טוב להיות מודע לזה.
אלו הם ללא ספק האותות הנפוצים ביותר שתתקלו בהם בשימוש היומיומי שלכם בלינוקס. לפירוט טכני יותר של האותות האחרים, המשך לסעיף הבא.
הפרטים הטכניים
אם אתה מנהל מערכת או מחפש לפתח עבור לינוקס, אתה כנראה רוצה לצלול עמוק יותר לתוך הפרטים הטכניים מאחורי מערכת האותות בלינוקס. הסעיף הבא בוחן את הפירוט הטכני המלא של אותות לינוקס. אתה לחלוטין לא צריך את המידע הזה כדי להשתמש בלינוקס על שולחן העבודה שלך, אבל אם אתה מתכוון לחקור את פעולתה הפנימית של המערכת, זה יכול להיות בעל ערך רב.
אותות סטנדרטיים
לינוקס תומכת באותות הסטנדרטיים המפורטים להלן. מספר מספרי אותות תלויים בארכיטקטורה, כפי שמצוין בעמודה "ערך". (כאשר ניתנים שלושה ערכים, הראשון תקף בדרך כלל עבור אלפא ו-sparc, האמצעי עבור i386, ppc ו-sh, והאחרון עבור mips. A - מציין שחסר אות בארכיטקטורה המתאימה.)
הערכים בעמודה "פעולה" בטבלה מציינים את פעולת ברירת המחדל עבור האות, באופן הבא:
טווח:פעולת ברירת המחדל היא לסיים את התהליך.
Ign:פעולת ברירת המחדל היא התעלמות מהאות.
הליבה:פעולת ברירת המחדל היא לסיים את התהליך ולהשליך את הליבה.
תפסיק:פעולת ברירת המחדל היא לעצור את התהליך.
ראשית, האותות המתוארים בתקן POSIX.1 המקורי.
אוֹת | ערך | פעולה | תגובה |
או מוות של תהליך שליטה | |||
SIGINT | 2 | טווח | הפרעה מהמקלדת |
SIGQUIT | 3 | הליבה | צא מהמקלדת |
SIGILL | 4 | הליבה | הוראה לא חוקית |
SIGABRT | 6 | הליבה | אות ביטול מ לְהַפִּיל(3) |
SIGFPE | 8 | הליבה | חריג נקודה צפה |
SIGKILL | 9 | טווח | אות הריגה |
SIGSEGV | 11 | הליבה | הפניה לא חוקית לזיכרון |
SIGPIPE | 13 | טווח | צינור שבור: כתוב לצינור ללא קוראים |
SIGALRM | 14 | טווח | אות טיימר מ אזעקה(2) |
SIGTERM | 15 | טווח | אות סיום |
SIGUSR1 | 30,10,16 | טווח | אות בהגדרת משתמש 1 |
SIGUSR2 | 31,12,17 | טווח | אות מוגדר על ידי משתמש 2 |
SIGCHLD | 20,17,18 | Ign | הילד הפסיק או הופסק |
SIGCONT | 19,18,25 | המשך אם נעצר | |
SIGSTOP | 17,19,23 | תפסיק | עצור תהליך |
SIGTSTP | 18,20,24 | תפסיק | הפסק להקליד ב-tty |
SIGTTIN | 21,21,26 | תפסיק | קלט tty עבור תהליך הרקע |
SIGTTOU | 22,22,27 | תפסיק | פלט tty עבור תהליך רקע |
האותות SIGKILL ו SIGSTOP לא ניתן לתפוס, לחסום או להתעלם.
לאחר מכן האותות אינם בתקן POSIX.1 אלא מתוארים ב-SUSv2 ו-SUSv3 / POSIX 1003.1-2001.
אוֹת | ערך | פעולה | תגובה |
SIGPOLL | טווח | אירוע שניתן לסקר (Sys V). מילה נרדפת של SIGIO | |
SIGPROF | 27,27,29 | טווח | פג תוקף הטיימר ליצירת פרופילים |
SIGSYS | 12,-,12 | הליבה | טיעון רע לשגרה (SVID) |
SIGTRAP | 5 | הליבה | מלכודת עקבות/נקודת שבירה |
סיגור | 16,23,21 | Ign | מצב דחוף בשקע (4.2 BSD) |
SIGVTALRM | 26,26,28 | טווח | שעון מעורר וירטואלי (4.2 BSD) |
SIGXCPU | 24,24,30 | הליבה | חרגת ממגבלת הזמן של המעבד (4.2 BSD) |
SIGXFSZ | 25,25,31 | הליבה | חרגת ממגבלת גודל הקובץ (4.2 BSD) |
עד וכולל Linux 2.2, התנהגות ברירת המחדל עבור SIGSYS, SIGXCPU, SIGXFSZ, וכן (על ארכיטקטורות שאינן SPARC ו-MIPS) SIGBUS היה לסיים את התהליך (ללא dump core). (בכמה יוניסים אחרים פעולת ברירת המחדל עבור SIGXCPU ו SIGXFSZ הוא לסיים את התהליך ללא dump core.) Linux 2.4 תואם את דרישות POSIX 1003.1-2001 עבור אותות אלה, ומסיים את התהליך עם dump core.
לאחר מכן, אותות שונים אחרים.
אוֹת | ערך | פעולה | תגובה |
SIGEMT | 7,-,7 | טווח | |
SIGSTKFLT | -,16,- | טווח | תקלת ערימה במעבד שותף (לא בשימוש) |
SIGIO | 23,29,22 | טווח | קלט/פלט אפשרי כעת (4.2 BSD) |
SIGCLD | -,-,18 | Ign | מילה נרדפת ל-SIGCHLD |
SIGPWR | 29,30,19 | טווח | הפסקת חשמל (מערכת V) |
SIGINFO | 29,-,- | מילה נרדפת ל-SIGPWR | |
SIGLOST | -,-,- | טווח | נעילת הקובץ אבד |
SIGWINCH | 28,28,20 | Ign | אות שינוי גודל חלון (4.3 BSD, Sun) |
חתום | -,31,- | טווח | אות לא בשימוש (יהיה SIGSYS) |
(אות 29 הוא SIGINFO / SIGPWR על אלפא אבל SIGLOST על ספסל.)
SIGEMT אינו מצויין ב-POSIX 1003.1-2001, אך עם זאת מופיע ברוב יוניסים אחרים, כאשר פעולת ברירת המחדל שלו היא בדרך כלל לסיים את התהליך עם dump core.
SIGPWR (שלא מצוין ב-POSIX 1003.1-2001) בדרך כלל מתעלמים כברירת מחדל באותם יוניסים אחרים שבהם הוא מופיע.
SIGIO (שלא מצוין ב-POSIX 1003.1-2001) מתעלמת כברירת מחדל במספר יוניסים אחרים.
אותות בזמן אמת
לינוקס תומכת באותות בזמן אמת כפי שהוגדרו במקור בהרחבות בזמן אמת של POSIX.4 (ונכללות כעת ב-POSIX 1003.1-2001). לינוקס תומכת ב-32 אותות בזמן אמת, ממוספרים מ-32 (SIGRTMIN) עד 63 (SIGRTMAX). (תוכניות צריכות להתייחס תמיד לאותות בזמן אמת באמצעות סימון SIGRTMIN+n, מכיוון שטווח מספרי האות בזמן אמת משתנה בין יוניס.)
בניגוד לאותות סטנדרטיים, לאותות בזמן אמת אין משמעויות מוגדרות מראש: ניתן להשתמש בכל הסט של אותות בזמן אמת למטרות מוגדרות באפליקציה. (עם זאת, שים לב שהטמעת LinuxThreads משתמשת בשלושת האותות הראשונים בזמן אמת.)
פעולת ברירת המחדל עבור אות בזמן אמת לא מטופל היא סיום תהליך הקבלה.
אותות בזמן אמת נבדלים על ידי הדברים הבאים:
- ניתן לתאר מופעים מרובים של אותות בזמן אמת. לעומת זאת, אם מספר מופעים של אות סטנדרטי נמסרים בזמן שהאות הזה חסום כעת, אז רק מופע אחד מונח בתור.
- אם האות נשלח באמצעות סימון(2), ניתן לשלוח ערך נלווה (או מספר שלם או מצביע) עם האות. אם תהליך הקבלה מגדיר מטפל לאות זה באמצעות ה- SA_SIGACTION דגל ל חתימה(2) אז הוא יכול להשיג את הנתונים האלה באמצעותsi_value שדה של siginfo_t המבנה הועבר כארגומנט השני למטפל. יתר על כן, ה si_pid ו si_uid ניתן להשתמש בשדות של מבנה זה כדי לקבל את ה-PID ומזהה המשתמש האמיתי של תהליך שליחת האות.
- אותות בזמן אמת מועברים בסדר מובטח. אותות מרובים בזמן אמת מאותו סוג נמסרים בסדר שנשלחו. אם אותות שונים בזמן אמת נשלחים לתהליך, הם נמסרים החל מהאות עם המספרים הנמוכים ביותר. (כלומר, לאותות עם מספר נמוך יש עדיפות גבוהה ביותר).
אם גם אותות סטנדרטיים וגם אותות בזמן אמת ממתינים לתהליך, POSIX משאיר אותו לא מוגדר מה יימסר ראשון. לינוקס, כמו יישומים רבים אחרים, נותנת עדיפות לאותות סטנדרטיים במקרה זה.
לפי POSIX, יישום צריך לאפשר לפחות _POSIX_SIGQUEUE_MAX (32) אותות בזמן אמת להיות בתור לתהליך. עם זאת, במקום להציב מגבלה לכל תהליך, לינוקס מטילה מגבלה מערכתית על מספר אותות בזמן אמת בתור עבור כל התהליכים. ניתן לצפות במגבלה זו (ועם הרשאות) לשנות באמצעות ה- /proc/sys/kernel/rtsig-max קוֹבֶץ. קובץ קשור,/proc/sys/kernel/rtsig-max, ניתן להשתמש כדי לגלות כמה אותות בזמן אמת נמצאים כרגע בתור.
תואם ל.
POSIX.1.
להשתמש ב איש פקודה (% איש) כדי לראות כיצד נעשה שימוש בפקודה במחשב הספציפי שלך.