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

שים לב כי:
1. העקרונות הבסיסיים זהים, עם שינויים אולי קטנים, גם להפצות Linux אחרות, ו
2. התיאור הבא אינו מיועד לייצג הסבר שלם של תהליך ההפעלה, אלא רק את היסודות.
תהליך ההפעלה של Linux
1. ה-POST (Power On Self Test) מאתחל ובודק את החומרה.
2. כאשר ה-POST מסיים, השליטה במערכת מועברת למשדר ההפעלה שלב ראשון, שמאוחסן באחד מסניפי הדיסקים הקשיחים (למערכות ישנות המשתמשות ב-BIOS ו-BMR), או במסדרת (U)EFI מיועדת.
3. משדר ההפעלה שלב ראשון מטעין את משדר ההפעלה שלב שני, בדרך כלל את GRUB (GRand Unified Boot Loader), הממוקם ב-/boot, אשר מטעין את הליבה ומערכת הקבצים המבוססת RAM הראשונית (הידועה גם בשם initramfs, המכילת תוכניות וקבצים בינאריים שמבצעים את הפעולות הנדרשות כדי לעתיק בסופו של דבר את מערכת הקבצים הממשית).
4. נוצג לנו מסך פתיחה שמאפשר לנו לבחור מערכת הפעלה וליבה להפעלה:

5. הקרנל מגדיר את החומר המחובר למערכת ולאחר שהמערכת הבסיסית הותקנה, הקרנל משים לרוץ תהליך עם PID 1, אשר בתורו יאתחל תהליכים אחרים ויציג לנו הודעת התחברות.
הערה: אם נרצה לעשות זאת בזמן מאוחר יותר, נוכל לבחון את פרטי התהליך הזה באמצעות פקודת dmesg ולסנן את הפלט שלה באמצעות הכלים שסברנו במאמרים הקודמים בסדרת זו.

בדוגמה למעלה, השתמשנו בפקודת ps המוכרת כדי להציג רשימת תהליכים נוכחיים שהתהליך האב (או במילים אחרות, התהליך שהתחיל אותם) שלהם הוא systemd (מנהל המערכת והשירות שרוב ההפצות המודרניות של Linux החליפו אליו) במהלך האתחול של המערכת:
# ps -o ppid,pid,uname,comm --ppid=1
שימו לב כי הדגל -o (קיצור דרך ל- –format) מאפשר לכם להציג את הפלט של ps בפורמט מותאם אישית כדי להתאים לצרכיכם באמצעות המילות המפתח המוגדרות באזור המפרטים הסטנדרטיים ב- STANDARD FORMAT SPECIFIERS במדריך man ps.
מקרה נוסף בו תרצו להגדיר את הפלט של ps במקום ללכת עם הגדרת ברירת המחדל היא כאשר תצטרכו למצוא תהליכים שגורמים לעומס זיכרון ראשי או/ו מעבד חשוב, ולמיין אותם בהתאם:
# ps aux --sort=+pcpu # Sort by %CPU (ascending) # ps aux --sort=-pcpu # Sort by %CPU (descending) # ps aux --sort=+pmem # Sort by %MEM (ascending) # ps aux --sort=-pmem # Sort by %MEM (descending) # ps aux --sort=+pcpu,-pmem # Combine sort by %CPU (ascending) and %MEM (descending)

מבוא ל־SystemD
מעטות החלטות בעולם לינוקס גרמו ליותר מחלוקות מאשר אימוץ systemd על ידי הפעלות הלינוקס הגדולות. תומכי systemd מזהים את היתרונות העיקריים שלו באופן הבא:
גם קראו: הסיפור מאחורי 'init' ו'systemd'
1. Systemd מאפשר יותר עיבוד בפעולה בזמן מרכז ההתחילה (בהשוואה לSysVinit הישן, שנוטה להיות אטית יותר בגלל שהוא מתחיל תהליכים אחד אחרי השני ובדוחק אם אחד תלוי בשני, ואחר כך מחכה עד שמגיעים הדיאמונים כדי שיותחלו עוד שירותים), ו
2. הוא פועל כניהול משאבים דינמי במערכת בהקישורת. כך ששירותים מורכבים בזמן שהם נדרשים (כדי להימנע מצרכים משאבי המערכת אם הם אינם בשימוש) במקום להתחיל בסיבה לא תקינה בזמן ההתחילה.
3. התאמה חזרה לתוכניות SysVinit.
Systemd נשלט על ידי השימושית systemctl. אם אתה באורך הזמן הזה נבחן בSysVinit, סביר שתהיה מורגש מ:
- הכלי service, שבמערכות הישנות נעשה בעזרתו ניהול תוכניות SysVinit, ו
- הכלי chkconfig, שמספק את המטרה של עדכון ובדיקה של מידע על רמות הפעלה של שירותים המערכת.
- כיבוי, שכנראה השתמשת בו כמה פעמים כדי לאתחל או לעצור מערכת פועלת.
הטבלה הבאה מציגה את הדמיון בין השימוש בכלי הישן הללו וב־systemctl:
Legacy tool | Systemctl equivalent | Description |
service name start | systemctl start name | Start name (where name is a service) |
service name stop | systemctl stop name | Stop name |
service name condrestart | systemctl try-restart name | Restarts name (if it’s already running) |
service name restart | systemctl restart name | Restarts name |
service name reload | systemctl reload name | Reloads the configuration for name |
service name status | systemctl status name | Displays the current status of name |
service –status-all | systemctl | Displays the status of all current services |
chkconfig name on | systemctl enable name | Enable name to run on startup as specified in the unit file (the file to which the symlink points). The process of enabling or disabling a service to start automatically on boot consists in adding or removing symbolic links inside the /etc/systemd/system directory. |
chkconfig name off | systemctl disable name | Disables name to run on startup as specified in the unit file (the file to which the symlink points) |
chkconfig –list name | systemctl is-enabled name | Verify whether name (a specific service) is currently enabled |
chkconfig –list | systemctl –type=service | Displays all services and tells whether they are enabled or disabled |
shutdown -h now | systemctl poweroff | Power-off the machine (halt) |
shutdown -r now | systemctl reboot | Reboot the system |
Systemd הכניסה גם את המושגים של יחידות (שיכולות להיות שירות, נקודת תקן, מכשיר או חריצת רשת) ומטרות (כלומר כיצד systemd מנהלת להתחיל מספר תהליכים קשורים בו זמנית, וניתן לראות אותן כמתאים – אם כי לא שווה – לרמות הרצה במערכות מבוססות SysVinit.
סיכום
משימות נוספות הקשורות לניהול תהליכים כוללות, אך אינן מוגבלות ליכולת ל:
1. להתאים את עדיפות הביצוע ביחס לשימוש במשאבים של המערכת של תהליך:
זה נעשה בעזרת כלי ה־renice, המשנה את עדיפות הזימון של תהליכים שרצים. במילים פשוטות, עדיפות הזימון היא תכונה שמאפשרת לליבה (נמצאת בגרסאות מ־2.6 ומעלה) להקצות משאבי מערכת לפי עדיפות הביצוע שהוקצתה (שקוראים לה ניכות, בטווח מ־-20 עד 19) לתהליך מסוים.
התחביר הבסיסי של renice הוא:
# renice [-n] priority [-gpu] identifier
בפקודה הגנרית לעיל, הארגומנט הראשון הוא ערך העדיפות שיש להשתמש בו, בעוד שהארגומנט השני ניתן לפרשות כ-מזהה תהליך (שהוא ההגדרה ברירת המחדל), מזההי קבוצת תהליכים, מזההי משתמש או שמות משתמשים. משתמש רגיל (למעט root) רק יכול לשנות את עדיפות הקידוח של תהליך שהוא או היא בעליו, ורק להגדיל את רמת הנעימות (שפיר, לקחת פחות משאבי מערכת).

2. להרוג (או להפריע לביצוע נורמאלי) של תהליך ככל הצורך:
במונחים יותר מדויקים, להרוג תהליך מתקן שליחת אליו אות לסיים את ביצועו בצורה יפה (SIGTERM=15) או מיידית (SIGKILL=9) דרך פקודות kill או pkill.
ההבדל בין שני הכלים הללו הוא שהראשון משמש לסיים תהליך מסוים או קבוצת תהליכים לחלוטין, בעוד שהשני מאפשר לך לעשות את זה על פי שם ותכונות אחרות.
בנוסף, pkill מגיע עם pgrep, שמראה את המזההי התהליכים (PIDs) שיתפגעו במידה ו-pkill יושם. לדוגמה, לפני הרצת:
# pkill -u gacanepa
ייתכן שיהיה שימושי לצפות בקטע את ה-PIDs ששייכים ל-gacanepa:
# pgrep -l -u gacanepa

ברירת המחדל, כל kill ו-pkill שולחים את האות SIGTERM לתהליך. כפי שצוין לעיל, ניתן להתעלם מהאות הזו (כאשר התהליך מסיים את ביצועו או לצמיתות), לכן כאשר יש לך צורך אמיתי לעצור תהליך פועל עם סיבה תקפה, יהיה עליך לציין את האות SIGKILL בשורת הפקודה:
# kill -9 identifier # Kill a process or a process group # kill -s SIGNAL identifier # Idem # pkill -s SIGNAL identifier # Kill a process by name or other attributes
מסקנה
במאמר זה סקרנו את היסודות של תהליך ההפעלה במערכת RHEL 7, וניתחנו על כמה מהכלים הזמינים לסיוע בניהול תהליכים באמצעות תוכניות נפוצות ופקודות מסוימות של systemd.
שים לב כי הרשימה הזו אינה מיועדת לכיסוי כל הפינות והשרברבים של נושא זה, אז תרגיש חופשי להוסיף את הכלים והפקודות המועדפים עליך למאמר זה באמצעות טופס ההערות למטה. שאלות והערות נוספות יתקבלו בברכה.
Source:
https://www.tecmint.com/rhcsa-exam-boot-process-and-process-management/