לדלג לתוכן

ניהול תהליכים בלינוקס

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

רואים מה רץ - ps ו-top

הפקודה הבסיסית ביותר לרשימת תהליכים היא ps. לבד היא מציגה רק את התהליכים של השל הנוכחי, אבל עם הדגלים ps aux היא מציגה את כל התהליכים במערכת, כולל מי הריץ אותם, כמה זיכרון ומעבד הם צורכים, והסטטוס שלהם.

הבעיה עם ps היא שהיא תמונת מצב חד פעמית. אם אתם רוצים לראות תהליכים בזמן אמת, מתעדכנים כל כמה שניות, הכלי המתאים הוא top, או השדרוג הפופולרי שלו htop, שנותן ממשק אינטראקטיבי, צבעוני, ונוח בהרבה לניווט.

htop

מה זה PID ולמה הוא חשוב

לכל תהליך יש מזהה ייחודי שנקרא PID - Process ID. זה המספר שדרכו אתם מתייחסים לתהליך ספציפי כשאתם רוצים לשלוט בו - למשל, להרוג אותו. אפשר לראות את ה-PID בפלט של ps או top, בעמודה הראשונה בדרך כלל.

הורגים תהליך תקוע

כשתוכנה נתקעת ולא מגיבה, הפקודה kill היא הכלי המרכזי לסגור אותה בכוח:

kill 4821

הפקודה הזו לא באמת "הורגת" את התהליך במכה, אלא שולחת לו signal - אות - שמבקש ממנו להיסגר בצורה מסודרת. ברירת המחדל היא signal מספר 15, שנקרא SIGTERM, שמאפשר לתוכנה הזדמנות לסגור קבצים ולנקות אחריה לפני שהיא יוצאת.

אם התהליך ממשיך להתעלם, אפשר להשתמש בסיגנל חזק בהרבה - SIGKILL, מספר 9 - שהמערכת מבצעת מיד בלי לתת לתהליך שום הזדמנות להגיב:

kill -9 4821

חשוב להשתמש ב--9 רק כמוצא אחרון, כי הוא לא נותן לתוכנה הזדמנות לשמור מידע או לשחרר משאבים כמו שצריך.

הורגים תהליך לפי שם

לא תמיד נוח לחפש PID באופן ידני. הפקודה pkill מאפשרת להרוג תהליך לפי שם ישירות:

pkill firefox

והפקודה pgrep עוזרת פשוט למצוא את ה-PID של תהליך לפי שם, בלי להרוג אותו.

מה זה עדיפות תהליך - nice

לכל תהליך בלינוקס יש רמת עדיפות שמשפיעה על כמה זמן מעבד הוא מקבל ביחס לתהליכים אחרים. הפקודה nice מאפשרת להריץ תהליך חדש עם עדיפות נמוכה יותר מלכתחילה, שימושי למשימות כבדות שלא דחופות, כמו עיבוד קבצים ברקע שלא רוצים שיאט את שאר העבודה. הפקודה renice מאפשרת לשנות את העדיפות של תהליך שכבר רץ.

תהליכי אב וילד

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

סיכום

ניהול תהליכים הוא לא רק "להרוג תוכנה תקועה". זו יכולת לראות בדיוק מה קורה במערכת שלכם, לזהות תהליכים שצורכים משאבים בצורה חריגה, ולשלוט בהתנהגות המערכת בצורה מדויקת.

רוצים ללמוד את כל היסודות של עבודה עם לינוקס, כולל ניהול תהליכים לעומק? יש לנו קורס שלם וחינמי: קורס לינוקס בסיסי.

יש לכם תהליך שמסרב להיסגר, או שאלה על ניהול משאבים במערכת? בואו נדבר על זה.

הצטרפו לקהילה בדיסקורד