ניהול תהליכים בלינוקס¶
בכל רגע נתון, על מערכת לינוקס רצים עשרות ולפעמים מאות תהליכים - חלקם שירותי מערכת, חלקם תוכנות שאתם הפעלתם ביודעין. לדעת איך לראות מה רץ, ואיך להתמודד עם תהליך שהשתגע, זו אחת המיומנויות הכי שימושיות בעבודה יומיומית עם לינוקס.
רואים מה רץ - ps ו-top¶
הפקודה הבסיסית ביותר לרשימת תהליכים היא ps. לבד היא מציגה רק את התהליכים של השל הנוכחי, אבל עם הדגלים ps aux היא מציגה את כל התהליכים במערכת, כולל מי הריץ אותם, כמה זיכרון ומעבד הם צורכים, והסטטוס שלהם.
הבעיה עם ps היא שהיא תמונת מצב חד פעמית. אם אתם רוצים לראות תהליכים בזמן אמת, מתעדכנים כל כמה שניות, הכלי המתאים הוא top, או השדרוג הפופולרי שלו htop, שנותן ממשק אינטראקטיבי, צבעוני, ונוח בהרבה לניווט.
מה זה PID ולמה הוא חשוב¶
לכל תהליך יש מזהה ייחודי שנקרא PID - Process ID. זה המספר שדרכו אתם מתייחסים לתהליך ספציפי כשאתם רוצים לשלוט בו - למשל, להרוג אותו. אפשר לראות את ה-PID בפלט של ps או top, בעמודה הראשונה בדרך כלל.
הורגים תהליך תקוע¶
כשתוכנה נתקעת ולא מגיבה, הפקודה kill היא הכלי המרכזי לסגור אותה בכוח:
הפקודה הזו לא באמת "הורגת" את התהליך במכה, אלא שולחת לו signal - אות - שמבקש ממנו להיסגר בצורה מסודרת. ברירת המחדל היא signal מספר 15, שנקרא SIGTERM, שמאפשר לתוכנה הזדמנות לסגור קבצים ולנקות אחריה לפני שהיא יוצאת.
אם התהליך ממשיך להתעלם, אפשר להשתמש בסיגנל חזק בהרבה - SIGKILL, מספר 9 - שהמערכת מבצעת מיד בלי לתת לתהליך שום הזדמנות להגיב:
חשוב להשתמש ב--9 רק כמוצא אחרון, כי הוא לא נותן לתוכנה הזדמנות לשמור מידע או לשחרר משאבים כמו שצריך.
הורגים תהליך לפי שם¶
לא תמיד נוח לחפש PID באופן ידני. הפקודה pkill מאפשרת להרוג תהליך לפי שם ישירות:
והפקודה pgrep עוזרת פשוט למצוא את ה-PID של תהליך לפי שם, בלי להרוג אותו.
מה זה עדיפות תהליך - nice¶
לכל תהליך בלינוקס יש רמת עדיפות שמשפיעה על כמה זמן מעבד הוא מקבל ביחס לתהליכים אחרים. הפקודה nice מאפשרת להריץ תהליך חדש עם עדיפות נמוכה יותר מלכתחילה, שימושי למשימות כבדות שלא דחופות, כמו עיבוד קבצים ברקע שלא רוצים שיאט את שאר העבודה. הפקודה renice מאפשרת לשנות את העדיפות של תהליך שכבר רץ.
תהליכי אב וילד¶
תהליכים בלינוקס מאורגנים בהיררכיה - כל תהליך נוצר על ידי תהליך אחר, שנקרא תהליך האב שלו. הפקודה pstree מציגה את ההיררכיה הזו בצורה ויזואלית, ועוזרת להבין למה סגירת תהליך אחד לפעמים סוגרת אוטומטית תהליכים נוספים שנוצרו על ידו.
סיכום¶
ניהול תהליכים הוא לא רק "להרוג תוכנה תקועה". זו יכולת לראות בדיוק מה קורה במערכת שלכם, לזהות תהליכים שצורכים משאבים בצורה חריגה, ולשלוט בהתנהגות המערכת בצורה מדויקת.
רוצים ללמוד את כל היסודות של עבודה עם לינוקס, כולל ניהול תהליכים לעומק? יש לנו קורס שלם וחינמי: קורס לינוקס בסיסי.
יש לכם תהליך שמסרב להיסגר, או שאלה על ניהול משאבים במערכת? בואו נדבר על זה.