כיצד להשתמש בפקודה 'init' בלינוקס
איניט הוא ההורה של כולם תהליכי לינוקס. זהו התהליך הראשון שמתחיל כאשר מחשב מאתחל והוא פועל עד שהמערכת נכבית. זה האב הקדמון של כל שאר התהליכים.
תפקידו העיקרי הוא ליצור תהליכים מתוך סקריפט המאוחסן בקובץ /etc/inittab. קובץ זה מאחסן בדרך כלל ערכים שגורמים איניט להשריץ gettys בכל שורה, אליה יכולים משתמשי המערכת להיכנס. זה גם שולט בתהליכים אוטונומיים הנדרשים על ידי כל מערכת מסוימת.

רמות ריצה
א רמת ריצה היא תצורת תוכנה של המערכת המאפשרת לבצע רק קבוצה נבחרת של תהליכים. התהליכים שהולידו איניט עבור כל אחת מרמות הריצה הללו מוגדרות בקובץ /etc/inittab. איניט תומך בשמונה רמות ריצה: 0 דרך 6 ו ס אוֹ ס. רמת הריצה משתנה כאשר משתמש בעל הרשאה פועל טלינית, אשר שולח אותות מתאימים ל איניט, אומר לו לאיזו רמת ריצה לשנות.
רמות ריצה 0, 1 ו-6 שמורות. רמת ריצה 0 עוצרת את המערכת, רמת ריצה 6 מאתחל המערכת, ורמת ריצה 1 מאלצת את המערכת למצב של משתמש יחיד. רמת ריצה S אינה מיועדת לשימוש ישיר אלא על ידי הסקריפטים המופעלים כאשר רמת הריצה 1 מתחילה.
רמות ריצה 7 עד 9 תקפות אך אינן מתועדות היטב מכיוון יוניקס קונבנציונלי גרסאות לא משתמשות בהן. רמות הריצה S ו-s זהות.
אתחול
לאחר איניט מבוצע כשלב האחרון של גַרעִין רצף האתחול, הוא מחפש את הקובץ /etc/inittab כדי לראות אם יש ערך מהסוג initdefault. הערך initdefault קובע את רמת הריצה הראשונית של המערכת. אם אין ערך כזה (או אין /etc/inittab בכלל), יש להזין רמת ריצה ב- קונסולת המערכת.
Runlevel S או s מעביר את המערכת למצב של משתמש יחיד ואינו דורש קובץ /etc/inittab. במצב של משתמש יחיד, מעטפת שורש נפתחת ב-/dev/console.
כאשר נכנסים למצב של משתמש יחיד, init קורא את הקונסולה ioctl מדינות מ-/etc/ioctl.save. אם הקובץ הזה לא קיים, init מאתחל את הקו ב-9600 באוד ועם הגדרות CLOCAL. מתי init עוזב את מצב משתמש יחיד, הוא מאחסן את הגדרות ioctl של הקונסולה בקובץ זה כדי שיוכל לעשות בהן שימוש חוזר להפעלה הבאה של משתמש יחיד.
כאשר נכנסים למצב מרובה משתמשים בפעם הראשונה, איניט מבצע את ערכי האתחול וההמתנה כדי לאפשר למערכות קבצים להיטען לפני שהמשתמשים נכנסים למערכת. לאחר מכן, כל הערכים התואמים את תהליך הריצה.
כאשר מתחילים תהליך חדש, איניט תחילה בודק אם הקובץ /etc/initscript קיים. אם כן, הוא משתמש בסקריפט הזה כדי להתחיל את התהליך.
בכל פעם שילד מפסיק, איניט מתעד את העובדה והסיבה שהוא מת ב-/var/run/utmp ו-/var/log/wtmp, בתנאי שהקבצים האלה קיימים.
שינוי רמות ריצה

לאחר שהוא הולידה את כל התהליכים שצוינו, איניט מחכה שאחד מהתהליכים הצאצאים שלו ימות, אות של הפסקת חשמל, או עד שיאותת על ידי Telinit לשנות את רמת הריצה של המערכת. כאשר אחד משלושת התנאים הללו מתרחש, הוא בוחן מחדש את הקובץ /etc/inittab. ניתן להוסיף ערכים חדשים לקובץ זה בכל עת. למרות זאת, init עדיין ממתין להתרחשות אחד משלושת התנאים לעיל. כדי לספק תגובה מיידית, ה Telinit Q הפקודה מתעוררת איניט כדי לבחון מחדש את הקובץ /etc/inittab.
אם איניט אינו במצב של משתמש יחיד ומקבל הפסקת חשמל אוֹת, הוא קורא את הקובץ /etc/powerstatus. לאחר מכן זה מתחיל א פקודה על סמך התוכן של הקובץ הזה:
- ו(AIL): החשמל נכשל, UPS מספקת את הכוח. בצע את powerwait ו הפסקת חשמל ערכים.
- O(ק): הכוח שוחזר, בצע את powerokwait ערכים.
- ל(OW): המתח נכשל, ול-UPS יש סוללה חלשה. בצע את powerfailnow ערכים.
אם /etc/powerstatus לא קיים או מכיל שום דבר מלבד האותיות F, O או L, איניט מתנהג כאילו הוא קורא את האות F.
השימוש ב- SIGPWR ו-/etc/powerstatus מוסר כעת. השתמש בערוץ הבקרה /dev/initctl במודרני הפצות לינוקס.
מתי איניט מתבקש לשנות את רמת הריצה, הוא שולח את אות האזהרה SIGTERM לכל התהליכים שאינם מוגדרים ברמת הריצה החדשה. לאחר מכן הוא ממתין חמש שניות לפני שהוא מסיים בכוח את התהליכים הללו באמצעות האות SIGKILL. איניט מניח שכל התהליכים הללו וצאצאיהם נשארים באותה קבוצת תהליך זה איניט נוצר עבורם במקור. אם תהליך כלשהו משנה את השתייכותו לקבוצת התהליך, הוא אינו מקבל את האותות הללו. יש להפסיק תהליכים כאלה בנפרד.
טלינית
טלינית מקושר אל /sbin/init. זה דורש טיעון של תו אחד ואותות איניט לבצע את הפעולה המתאימה. הטיעונים הבאים משמשים הנחיות ל טלינית:
- 0, 1, 2, 3, 4, 5 או 6: עבור לרמת הריצה שצוינה.
- א ב ג: עבד רק את ערכי הקובץ /etc/inittab עם רמת ריצה a, b או c.
- ש אוֹ ש: בדוק מחדש את הקובץ /etc/inittab.
- ס אוֹ ס: עבור למצב של משתמש יחיד. לפעמים, מצב משתמש יחיד נקרא מצב שחזור מכיוון שהוא משמש לעתים קרובות לביצוע תיקוני מערכת חירום.
- U אוֹ u: לבצע את עצמו מחדש (שימור המדינה). לא מתרחשת בדיקה חוזרת של קובץ /etc/inittab. רמת הריצה צריכה להיות S, s, 1, 2, 3, 4 או 5; אחרת, הבקשה מתעלמת בשקט.
טלינית יכול גם לספר איניט כמה זמן צריך לחכות בין תהליכי שליחת אותות SIGTERM ו- SIGKILL. ברירת המחדל היא חמש שניות, אך ניתן לשנות ערך זה באמצעות ה- -ט שניות אוֹפְּצִיָה.
טלינית ניתן להפעיל רק משתמשים בעלי הרשאות מתאימות.
ה איניט בודק בינארי אם כן איניט אוֹ טלינית על ידי הסתכלות על מזהה התהליך שלו. האמיתי איניטמזהה התהליך של התהליך הוא תמיד 1. מכאן נובע שבמקום להתקשר טלינית, אדם יכול להשתמש איניט בתור קיצור דרך.