ניהול תהליכים ב-Linux עשוי להיראות מסויט למנהל מערכת (sysadmin) חדש בהתחלה. אך עם קצת הסבר והדגמה, תלמד כיצד למצוא ולבצע תהליכי סיום ב-Linux, זה פשוט עניין של שימוש בכלי שורת פקודה כמו ps
ו־kill
.
במאמר זה, תלמד פקודות לאיתור תהליכים רצים ותהליכים תקלים, להרוג (לסיים) תהליכים רצים, למצוא תהליכים ברקע, ועוד הרבה יותר על כל מערכת ההפעלה של Linux.
עד סוף המאמר, תוכל לנהל תהליכים בהתבסס על מספרי זיהוי תהליך (PIDs) משורת הפקודה כמו מקצוען של Linux. המשך לקרוא כדי ללמוד את כל פקודות ניהול התהליכים ב-Linux!
דרישות קדם
מאמר זה יהיה הסבר על כיצד לנהל תהליכים ב-Linux. אם ברצונך להיות פעיל, יהיה עליך להתקין את המערכות הבאות:
- A Linux host, which can be a virtual machine or a physical machine.
- כדי לנסות את הדוגמאות של PowerShell, התקן את PowerShell 7.1.1 על מארח Linux.
- A non-root user account. While root access is not required, there will be an example where the root user can kill the running process of another user.
ההפצה של Linux שתבחר להשתמש בה, זו בחירה שלך. המאמר הזה יתבסס על Ubuntu 20.04 LTS. עם זאת, הפקודות הן תקניות למערכת ההפעלה של Linux.
מוכן להתחיל? נהדר, בוא נתחיל.
ניהול תהליכים ב-Linux
באירועים נדידים, ייתכן שתתקל במקרה בו עליך לעצור תהליך פועל במערכת Linux. לדוגמה, ייתכן שיש לך תסריט Bash הרץ על פי תזמון. תסריט זה מוגדר להרוץ כמשתמש אחר דרך משרת cron (מתזמן תהליך של Linux).
לפעמים, תסריט זה יוצר תהליכים שגויים שיכולים לגרום לכשל בתסריט. איך ניתן להפסיק את התהליכים האלו בלעדייך לאתחל את המערכת או לעצור את התסריט?
בקטעים הבאים, תלמד על פקודות שמשמשות לאיתור ולסיום או הרג של תהליכים במערכת Linux. כל קטע יבנה על הקודם. תלמד על פקודות ps
, top
, pgrep
, kill
, ו־pkill
, שכלן נטיית Linux.
כתוספת, פקודות שקולות ב-PowerShell, Get-Process
ו־Stop-Process
, כלולות אם פקודות ה-Linux אינן בסגנון שלך.
כלי לאיתור תהליכים
לפני שאתה מעצור תהליך, עליך לאתר את התהליך הנכון למטרה. מזהה ה-PID הייחודי מאפשר יעד מדויק. המשך לקרוא כדי ללמוד איך לאתר את התהליכים הנכונים להפסקה.
שימוש בפקודה ps
להצגת מידע על התהליך
הפקודה ps
מציגה מידע הקשור לתהליכים פעילים במערכת Linux. באפשרותך לאתר תהליך שרץ ואף תהליכי רקע עם הפקודה ps
.
הפקודה ps
, בברירת מחדל, תציג את כל התהליכים עבור זיהוי משתמש פעיל (EUID) של המשתמש הנוכחי. הרצת הפקודה ps
, כפי שמוצג למטה, תחזיר כל תהליך רץ שבאפשרות המשתמש שלך לסיים.

bkindle
.איתור מידע נרחב על תהליכים באמצעות הפקודה top
מה קורה אם ברצונך למצוא מידע שמתעדכן באופן קבוע על תהליכים שרצים ומדדי מערכת, במקרה כזה, תוכל להשתמש בפקודה top
. להבדל מבין ps
, פקודת top
מעדכנת את מידע התהליכים על המסך לאורך מרווח זמן קבוע.
כאשר אתה מפעיל את הפקודה top
, תראה יותר מפיד. כלולים בפרטי התהליך אחוזי CPU וזיכרון, ערכי נחמד (עדיפות תהליך לסידור CPU), ועדיפות התהליך (PR) המוגדרת על ידי ליבת Linux.
עבור מנהל מערכת חדש או מנוסה, פקודת top
היא לעיתים כל כך הכלי העיקרי לניהול משאבי מערכת חיוניים ותהליכים. כפי שמוצג למטה, פלט הפקודה top
מציג מידע נוסף על תהליכים מאשר פקודת ps
כולל מדדי מערכת כוללים.

top
command on Ubuntu Desktop 20.04 LTS showing all running PID’s.htop
הוא גרסה משופרת של top
הכוללת מגוון שיפורים, כגון פלט צבעוני לטרמינל.
נניח שתרצה לבדוק את המשאבים של הזיכרון או המעבד שתהליך צורב. במקרה כזה, תוכל להשתמש במפתח ה- p
של top
כפי שמוצג למטה.

אולי תרצה להציג את כל תהליכי הריצה עבור שם משתמש מסוים. פקודת top
מציעה את המפתח u
כדי להציג רק תהליכי משתמש מסוימים. כפי שמוצג בדוגמה למטה, מזהים תהליכים (PIDs) התואמים רק את זהות המשתמש bkindle
מוצגים.

top
command displaying only processes for the user bkindle
.איתור מזהי תהליכים מסוימים עם פקודת pgrep
במקור פקודת Solaris, pgrep
נועדה לשימוש ב-Linux. על ידי שילוב יכולת החיפוש של פקודת grep
וניהול התהליכים של ps
, pgrep
מציעה גמישות באיתור התהליך המדויק למטרה.
למרות ש- ps
מציגה מידע נוסף, pgrep
מותאמת להחזיר רק את מזהי התהליכים שמתקבלים בתוצאה. pgrep
עוזרת באיתור התהליך באמצעות ה- הרבה פרמטרי חיפוש זמינים. בדוגמה הבאה, מוצגת פקודת pgrep
המחפשת תהליך התואם את vmtoolsd
.

pgrep
to obtain all PIDs associated with vmtoolsd
.באופן דומה, סוֹמֵן מזהה משתמש עם המתג u
כדי לאחזר רק תהליכים הקשורים למשתמש הספציפי הזה. כפי שמוצג למטה, מוחזר PID יחיד עבור המשתמש bkindle
והתהליך vmtoolsd
.

vmtoolsd
process associated with the user bkindle
.מציאת תהליכים בעזרת Get-Process
של PowerShell ב-Linux
פקודות טיפוליות סטנדרטיות ב-Linux עובדות נהדר, אך האם ידעת ש-PowerShell מסוגלת לנהל תהליכי Linux גם? תכליתו של הפקודה Get-Process
דומה לפקודת ps
ב-Linux ומחזירה מידע על התהליכים. לדוגמה, אולי תרצה למצוא את כל התהליכים הפועלים של המשתמש הנוכחי, bkindle
. כפי שמוצג למטה, מצא את כל תעודות הזיהוי (מתוייגות בתגית ID על ידי Get-Process
) של המשתמש bkindle
.

Get-Process
cmdlet.קשור: איך להשתמש ב-PowerShell Where-Object כדי לסנן את כל הדברים
לאחר שנלמד איך לאתר תהליכים שונים, נמשיך ונגלה את כל הדרכים לסיים או להרוג תהליך ב-Linux!
הריגת תהליכים באמצעות פקודות הריגה ב-Linux
בקטעים הקודמים, למדת כיצד לאתר את ה-PID של התהליך שברצונך לשלוח אליו אות הריגה באמצעות פקודות Linux טבעיות ו-PowerShell. הקטעים הבאים יסבירו כיצד להשתמש בתוכניות kill
ו-pkill
, את האותות המשויכות להם ואת המפסקים בשורת הפקודה.
אותות Linux וניהול תהליכים
אותות הם השיטה שבה משתמשת לינוקס כדי לתקשר עם תהליכים הפועלים במערכת ההפעלה. שלושה אותות עיקריים שהפקודה kill
משתמשת בהם כדי לסיים תהליכים הם:
- 1 (SIGHUP) – סוגר תוכניות אינטראקטיביות וגורם לדמונים (שירותים ברקע) לקרוא מחדש את קבצי התצורה שהתהליך משתמש בהם.
- 9 (SIGKILL) – כובה את התהליך מבלי לבצע משימות יציבה לסגירה.
- 15 (SIGTERM) – מאפשר לתהליך לסיים בצורה יציבה, כמו סגירת קבצים פתוחים בסיום. זהו האות הדיפולטית המשתמשת כאשר לא צויין מספר כאשר משתמשים בפקודת ההורג.
בעוד שמאמר זה מתמקד רק בשלושת האותות העיקריים המשמשים להורג תהליכים, ישנם סך כלל 64 אותות זמינים. ניתן להשתמש ב־
kill -l
כדי לקבל את רשימת האותות והמספרים התואמים שלהם.
עכשיו שהבנת את שלושת האותות העיקריים שמשמשים לסיום תהליך, למד איך להורג תהליך באיזורים הבאים.
שימוש בפקודה kill
לסיום תהליך
בדוגמה הבאה, תשתמש בפקודה kill
. הנניח לרגע שאתה מריץ מופע PowerShell, בשם pwsh
, וה־PID המוקצה הוא 22687. דרך אחת לסיים את התהליך הוצגה למטה.
- השתמש ב־
pgrep pwsh
כדי לקבוע את ה־PID של התהליךpwsh
, שישמש בפקודת ההורגkill
. - Use
kill -s TERM 22687
לסיים את התהליך שלpwsh
בצורה יפה. הפקודהTERM
מקשרת לאות SIGTERM 15 ומסומנת באמצעות הפרמטרs
של פקודתkill
. - השתמש ב־
top
,ps
, אוpgrep
לבדיקת ה־PID כדי לוודא שהוא לא מופיע יותר.
למטה מוצג דוגמה לתהליך זה מתוך טרמינל bash ב-Ubuntu 20.04 LTS.

kill
and associated commands to terminate the pwsh
process.פקודת
killall
תסיים את כל התהליכים לפי שם במקום לפי PID, דבר שיכול להפוך את הפקודה להורסתית אם משתמשים בה באופן בלתי זהיר. אם בחרת להשתמש בפקודה זו, השתמש באפשרותi
כדי לגרום לפקודה לבקש אישור.
הרג של תהליכים לפי שם באמצעות pkill
יתכן ששמת לב שפקודת kill
עובדת רק עם מזהים של תהליכים. זה יכול להפוך את תהליך הסיום של תהליך לתהליך מרובה צעדים. הפקודה pkill
, הכלולה בחבילות procps ו־procps-ng, סוגרת תהליך על פי שם חיפוש.
פונקציונלית, פקודת pkill
פועלת כמעט שמסביב לתוכנה pgrep
. פקודת pkill
שולחת אותה הודעת סיגנל לכל תהליך שנמצא במקום להציג רק את מספרי התהליכים בטרמינל. pkill
מתפקדת באופן שונה מ- kill
בכך ש- pkill
יכולה להשתמש רק בשם של תהליך, ולא במספר הזיהוי שלו.
פקודת
pkill
אינה זמינה, כברירת מחדל, ב- Ubuntu 20.04 LTS. עליך להוריד ולהתקין את היישום. כדי לעשות זאת, הרץ אתsudo apt install mcollective-plugins-process -y
.
כדי להרוג תהליך באמצעות pkill
, בצע את השלבים הבאים:
- השתמש ב-
ps
כדי לוודא שיישום הננו (עורך טקסט מבוזר לשורות פקודה) רץ כרגע. שלב זה אופציונלי, אך זהו בדיקת בטיחות לפני הריגת תהליך. - השתמש ב-
pkill -9 nano
כדי לסיים באופן חזק יישום הננו.
הנה דוגמה לתהליך מעלה מטריקס של Ubuntu 20.04 LTS bash terminal.

pkill
command to forcefully terminate the nano process.הריגת תהליך בעזרת פקודת Top
כאשר אתה מפעיל את הפקודה top
כדי לצפות בתהליכים פועלים, תוכל להרוג תהליך נתון בעזרת מקש ה־k. תראה לך הודעת פנימית שמבקשת את מזהה התהליך שברצונך להרוג.
כפי שמוצג למטה, הרץ את הפקודה top
ולחץ על k. הזן את מזהה התהליך שברצונך להרוג, ולחץ על המקש Enter כדי לסיים את מזהה התהליך מיד.

top
to specify a process to terminate using the k keystroke.באופן הבא, למד דרך אחרת אחת להשתמש בפקודות נייטיביות של Linux בעזרת פקודת הפוורשל PowerShell Stop-Process
!
שימוש בפקודת PowerShell Stop-Process
לסיים תהליכים
אם פקודות ה-Linux המובנות אינן בסגנון שלך, PowerShell יכולה לספק לך את הכיסוי! כמו גם עם הפקודה kill
, אתה יכול לסיים תהליכים באמצעות פקודת Stop-Process
ב-Linux. פעם נוספת, התעלם מכך שאתה מפעיל תהליך של PowerShell pwsh
.
- מצא את ה-PID באמצעות
Get-Process -ProcessName 'pwsh'
ושים לב ל-PIDs שברצונך לסיים. - השתמש ב-
Stop-Process -Id 29992,30014
כדי לסיים את התהליכים המרובים שהוחזרו. - השתמש ב-
Get-Process -ProcessName 'pwsh'
ווודא שה-PIDs,29992
ו־30014
, אינם מופיעים עוד ברשימה, המשמעות שהם סוגרו.
בנוסף, אפשר להשתמש ב-
Get-Process
ובשיטת ה-kill
כדי לסיים תהליכים יחידים או מרובים:(Get-Process -Id [PID]).Kill()
או(Get-Process -Id [PID1,2,3,4]).Kill()
.השתמש בזהירות בפרמטר ה-
ProcessName
. שימוש בפרמטר זה יתנהג בדיוק כמו פקודת ה-killall
, וישלח להוציא את כל התהליכים התואמים את השמות שסופקו.
למטה נתונה דוגמה לתהליך הנ"ל מתוך טרמינל bash של Ubuntu 20.04 LTS.

Stop-Process
to kill processes in Linux.שלבים הבאים
אתה כעת צריך לדעת את הדרכים הרבות למצוא ולסיים תהליכים ב-Linux! לאתגר הבא שלך, נסה להרוג תהליכים מרחוק באמצעות חיבורי SSH או להרוג תהליכים שעשויים לרוץ בקונטיינרים.