שיעור 08: טרמינל ושירותי רקע¶
מדריך עזר לתלמיד (גרסת vEXP מורחבת)
מטרות השיעור¶
- מבוא לטרמינל (Terminal) - למה ה-CLI קריטי לטכנאים, קיצורי מקלדת, ויישור קו לפני עבודה מתקדמת.
- הלב של המערכת - תהליך
launchd(הבדל בין LaunchDaemons, Agents ו-LaunchAngels). - אבחון עמוק - קריאת זיכרון ב-Activity Monitor, וקריאה/אבחון של קבצי Plist (XML).
- תיבול ארגוני - איתור ה-Agent של מערכת ה-MDM, הבנת ססטוס הסנכרון שלו ומה עושים כשהוא קורס.
סקירה¶
מושגי יסוד וטרמינולוגיה¶
- CLI (Command Line Interface): ממשק שורת פקודה. כלי הגישה הישיר למערכת ההפעלה שמעקף את הממשק הגרפי (GUI). ב-macOS הכלי המובנה הוא Terminal (אשר הגיע בירושה ממערכת NeXTSTEP ב-2001).
- Zsh (Z Shell): מעטפת פקודות מודרנית המהווה את ברירת המחדל ב-macOS החל מגרסת Catalina, מחליפה את Bash הישן. מספקת יכולות אוטומציה וסקריפטים מתקדמות יותר.
- Process ID (PID): מזהה תהליך ייחודי (מספר) שמערכת ההפעלה מעניקה לכל תוכנה או שירות שרצים בזיכרון באותו רגע.
- launchd: "מנהל התהליכים" העליון (תמיד מקבל PID 1). אחראי להעלות את המערכת, לנהל שירותי רקע ולהפעיל אפליקציות לפי דרישה. מחליף מנגנוני Unix ישנים כמו
initו-cron(פותח ב-2005 ומאוחר יותר הורחב עם מערכות DAS ו-CTS לתזמון משימות גמיש). - LaunchDaemon: שירות מערכת (Daemon) שרץ ברקע תחת הרשאות משתמש העל (
root), ללא תלות באף משתמש מחובר. סוכני MDM, תוכנות אנטיווירוס ארגוניות ושירותי מערכת קריטיים רצים בצורה זו. - LaunchAgent: שירות משתמש שרץ ברקע עם ההרשאות של המשתמש שהתחבר למערכת. נטען רק לאחר תהליך ה-Login.
- LaunchAngel (מ-Tahoe 26): סיווג חדש של שירותי מערכת פנימיים המנוהלים ישירות על ידי אפל באמצעות מנגנון ה-
RunningBoard. קבצים אלו נעולים במחיצת ה-SSV. - Plist (Property List): פורמט לשמירת קבצי תצורה ב-macOS, מבוסס XML או בינארי. משמש לשמירת העדפות של אפליקציות ולהגדרת הפעולות של Daemons ו-Agents.
- מנטר הפעילות (Activity Monitor): תוכנת הניטור המובנית המציגה עומסי מעבד, שימוש בזיכרון, פעילות כונן ותעבורת רשת. נוצרה בשנת 2003 מאיחוד התוכנות הישנות Process Viewer ו-CPU Monitor.
- Memory Pressure: מדד הזיכרון החשוב ביותר ב-Activity Monitor. מייצג את "מאמץ" המערכת בניהול הזיכרון הפיזי וכולל דחיסת זיכרון (Compression) ושימוש ב-Swap (כתיבה לכונן).
- Swap: מנגנון מערכתי שבו כאשר נגמר הזיכרון הפיזי (RAM), המערכת מעבירה מידע פחות שימושי לכונן ה-SSD. שימוש יתר ב-Swap יגרום לירידה דרסטית בביצועים.
- mdmclient: תהליך מערכת (Daemon) מובנה של אפל, האחראי על קבלת פקודות שרת ה-MDM דרך APNs והחלת הפרופילים במערכת ההפעלה.
- TCC (Transparency, Consent, and Control): מנגנון אבטחה ב-macOS החוסם גישה של תוכנות וסקריפטים לאזורים רגישים ללא אישור מפורש מהמשתמש או מפרופיל ארגוני (PPPC).
- BTM (Background Task Management): מנגנון המאפשר למשתמשים לשלוט באילו שירותי רקע מורשים לרוץ (דרך System Settings). ניתן לנהל באופן מתקדם באמצעות פקודת ה-
sfltool.
קיצורי מקלדת בטרמינל (Terminal Shortcuts)¶
Ctrl + C: עצירת ריצה של פקודה או תהליך נוכחי (Interrupt).Ctrl + L: ניקוי המסך (שקול לפקודתclear).Ctrl + A: קפיצה לתחילת השורה.Ctrl + E: קפיצה לסוף השורה.Tab: השלמה אוטומטית של שם קובץ, נתיב או פקודה.
פקודות מערכת חשובות¶
sudo: הרצת פקודה יחידה עם הרשאות מנהל רשת/Root. דורש הזנת סיסמת אדמין.kill -9 <PID>: "חיסול" מיידי ואלים של תהליך שנתקע לפי המזהה שלו.top -u: צפייה בזמן אמת בצריכת משאבי המערכת עם מיון לפי שימוש במעבד (CPU). לחץ עלqליציאה.ps -ax: הדפסת רשימת כל התהליכים שרצים כעת במערכת.
פקודת העל launchctl¶
launchctl list: רשימת התהליכים תחת מנהל התהליכים הנוכחי.sudo launchctl print system: הדפסת מצב כל שירותי המערכת (Daemons).sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.plist: טעינת/הפעלת שירות מערכת.sudo launchctl bootout system /Library/LaunchDaemons/com.example.plist: פריקת/השעיית שירות מערכת.
ניהול BTM (sfltool) - למערכות Tahoe ומעלה¶
sudo sfltool dumpbtm > ~/Documents/btmdump.txt: שאיבת בסיס הנתונים של Background Task Management.sudo sfltool resetbtm: איפוס בסיס הנתונים של ה-BTM.
קריאה וניהול של Plists (plutil)¶
plutil -lint /path/to/file.plist: בדיקת תקינות הקובץ (Syntax Check) בחיפוש אחר שגיאות תחביר או תגיות חסרות.plutil -p /path/to/file.plist: הדפסה פשוטה של התוכן, עוקף קבצים בינאריים.sudo plutil -convert xml1 /path/to/file.plist: המרת קובץ מבינארי ל-XML כדי לאפשר עריכה.sudo plutil -convert binary1 /path/to/file.plist: החזרת הקובץ לפורמט בינארי לאחר עריכה.
אבחון ה-MDM¶
log stream --predicate 'process == "mdmclient"' --info: פקודה המציגה בזמן אמת כל פעולה וסנכרון שסוכן ה-MDM מתקשר עם השרת.sudo profiles renew -type enrollment: כפיית סנכרון מיידי אל מול שרת ה-MDM מצידו של הלקוח.
נתיבים קריטיים¶
~/Library/Preferences/: התיקייה בה נשמרים קבצי ה-Plist האישיים של משתמש./System/Library/LaunchDaemons/: ספריית שירותי הליבה של macOS, מוגנת תחת ה-SSV./System/Library/LaunchAngels/: (החל מ-Tahoe) שירותי מערכת ייעודיים של אפל תחת ניהול RunningBoard, נעולים ב-SSV./Library/LaunchDaemons/: ספרייה המיועדת לסוכני מערכת (Daemons) של צד שלישי (אנטי-וירוס, MDM).~/Library/LaunchAgents/: ספרייה המיועדת לסוכנים ברמת משתמש הספציפי שנטענים עם ביצוע ה-Login.
קישורים מומלצים ולקריאה נוספת¶
- Explainer: % CPU in Activity Monitor - הסבר לעומק למה אחוזי מעבד במק לפעמים מטעים ואיך לקרוא אותם נכון (התייחסות ל-Performance vs Efficiency Cores).
- A brief history of XML and property lists - רקע היסטורי מעניין המסביר מדוע אפל נשענת כל כך חזק על קבצי Plist מבוססי XML ופורמטים בינאריים לכל הגדרות המערכת.
- View Memory Usage in Activity Monitor - המדריך הרשמי של אפל לקריאת לחץ זיכרון בכלי ה-Activity Monitor.
סרטון סיכום¶
המחשה ויזואלית (עזר לתלמיד)
תמונות אלו ממחישות את הממשק או המנגנון הרלוונטי לנושא השיעור.
