30 דוגמאות של "פס Command" שימושיות למעקב אחר תהליכי לינוקס

ps (מצב תהליכים) הוא כלי יישומים טבעי ב-Unix/Linux לצפייה במידע הנוגע לבחירת תהליכים רצים במערכת: הוא קורא את המידע הזה מהקבצים הווירטואליים במערכת הקבצים /proc. זהו אחד מכלי התקשורת החשובים לניהול מערכת במיוחד בתחום מעקב אחר תהליכים, כדי לעזור לך להבין מה קורה במערכת Linux.

יש לו מספר אפשרויות רבות לשינוי פלט שלו, אך תמצא מספר קטן מהן שימושיות בפועל לשימוש יומיומי.

קרא גם: כל מה שצריך לדעת על תהליכים ב-Linux [מדריך מקיף]

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

שים לב ש-ps מפיק פלט עם שורת כותרת, שמייצגת את המשמעות של כל עמודה במידע, תוכל למצוא את המשמעות של כל התוויות בעמודת ה-ps man page.

רשימת כל התהליכים בשיא המעטפת הנוכחית

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

$ ps 
List Current Running Processes

הדפסת כל התהליכים בפורמטים שונים

2. הצגת כל תהליך פעיל במערכת Linux בפורמט ג'נרי (Unix/Linux).

$ ps -A
OR
$ ps -e
List Processes in Standard Format

3. הצגת כל התהליכים בפורמט BSD.

$ ps au
OR
$ ps axu
List Processes in BSD Format

4. לביצוע רשימת פורמט מלא, הוסף את הדגל -f או -F.

$ ps -ef
OR
$ ps -eF
List Processes in Long List Format

הצגת תהליכים בריצת משתמש

5. ניתן לבחור את כל התהליכים ששייכים אליך (מבצע הפקודה ps, root במקרה זה), הקלד:

$ ps -x 

6. כדי להציג את התהליכים של משתמש לפי זיהוי משתמש אמיתי (RUID) או שם, השתמש בדגל -U.

$ ps -fU tecmint
OR
$ ps -fu 1000
List User Processes by ID

7. כדי לבחור את התהליכים של משתמש לפי זיהוי משתמש אפקטיבי (EUID) או שם, השתמש באפשרות -u.

$ ps -fu tecmint
OR
$ ps -fu 1000

הדפסת כל התהליכים שרצים כאדמין (זיהוי אמיתי ואפקטיבי)

8. הפקודה שלהלן מאפשרת לך להציג כל תהליך שרץ עם הרשאות משתמש root (זיהוי אמיתי ואפקטיבי) בפורמט משתמש.

$ ps -U root -u root 
Display Root User Running Processes

הצגת תהליכי קבוצה

9. אם ברצונך לרשום את כל התהליכים ששייכים לקבוצה מסוימת (זיהוי קבוצה אמיתי (RGID) או שם), הקלד.

$ ps -fG apache
OR
$ ps -fG 48
Display Group Processes

10. כדי לרשום את כל התהליכים ששייכים לשם קבוצה אפקטיבי (או סשן), הקלד.

$ ps -fg apache

הצגת תהליכים לפי PID ו-PPID

11. ניתן לרשום תהליכים לפי PID כדלקמן.

$ ps -fp 1178
List Processes by PID

12. כדי לבחור תהליך לפי PPID, הקלד.

$ ps -f --ppid 1154
List Process by PPID

13. בחר באמצעות רשימת PID.

$ ps -fp 2226,1154,1146
List Processes by PIDs

הצגת תהליכים לפי TTY

14. כדי לבחור תהליכים לפי tty, השתמש בדגל -t כדלקמן.

$ ps -t pts/0
$ ps -t pts/1
$ ps -ft tty1
List Processes by TTY

הדפס עץ תהליכים

15. עץ תהליכים מציג איך תהליכים במערכת מקושרים זה לזה; תהליכים שההורים שלהם הושמדו מתאם לinit (או systemd).

$ ps -e --forest 
List Process Tree

16. ניתן גם להדפיס עץ תהליכים עבור תהליך נתון בצורה זו.

$ ps -f --forest -C sshd
OR
$ ps -ef --forest | grep -v grep | grep sshd 
List Tree View of Process

הדפסת תהליכי תהליכים

17. כדי להדפיס את כל התהליכים של תהליך, השתמש בדגל -L, זה יציג את העמודות LWP (תהליך קל משקל) וגם NLWP (מספר תהליכי הקל משקל).

$ ps -fL -C httpd
List Process Threads

ציון פורמט פלט מותאם

בשימוש באפשרויות -o או –format, ps מאפשר לך לבנות פורמטי פלט שהוגדרו על ידי המשתמש כפי שמוצג למטה.

18. כדי לרשומ את כל מחלקי הפורמט, כלול את הדגל L.

$ ps L

19. הפקודה למטה מאפשרת לך להציג את מזהה התהליך (PID), מזהה התהליך-הורה (PPID), שם המשתמש, ופקודה של תהליך.

$ ps -eo pid,ppid,user,cmd
List Processes with Names

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

$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime
List Process ID Information

21. כדי למצוא שם תהליך בשימוש בזהות ה-PID שלו.

$ ps -p 1154 -o comm=
Find Process using PID

הצגת תהליכי הורה וילד

22. כדי לבחור תהליך מסוים לפי שמו, השתמש בדגל -C, זה יציג גם את כל התהליכים הילד שלו.

$ ps -C sshd
Find Parent-Child Process

23. מצא את כל מזהי ה-PID של כל המופעים של תהליך, שימושי כאשר כתיבת סקריפטים שצריכים לקרוא PID מפלט std או קובץ.

$ ps -C httpd -o pid=
Find All Process PIDs

24. בדוק את זמן הביצוע של תהליך.

$ ps -eo comm,etime,user | grep httpd

הפלט למטה מראה שהשירות HTTPD רץ כבר שעה, 48 דקות ו-17 שניות.

Find Process Uptime

פתרון בעיות בביצועי מערכת Linux

אם המערכת שלך לא פועלת כפי שצריך, לדוגמה, אם היא איטית באופן לא רגיל, ניתן לבצע בדיקת בעיות במערכת כך:

26. מצא תהליכים פועלים ראשיים לפי שימוש בזיכרון ובמעבד הגבוה ביותר ב-Linux.

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
OR
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
Find Top Running Processes

27. כדי להרוג תהליכי Linux/יישומים לא מגיבים או כל תהליך שצורף בו זמן עיבוד גבוה.

ראשית, מצא את מזהה ה-PID של התהליך או היישום הלא פועל.

$ ps -A | grep -i stress

לאחר מכן השתמש ב-פקודת kill כדי לסיים אותו מיידית.

$ kill -9 2583 2584
Find and Kill a Process

הדפס מידע אבטחה

28. הצג קשר אבטחה (במיוחד עבור SELinux) כך.

$ ps -eM
OR
$ ps --context
Find SELinux Context

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

$ ps -eo  euser,ruser,suser,fuser,f,comm,label
List SELinux Context by Users

ביצוע מעקב בזמן אמת של תהליכים באמצעות כלי ה-Watch

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

$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'
Real-Time Process Monitoring

חשוב: ps מציג רק מידע סטטי, כדי להציג פלט שמתעדכן בתדירות תוכל להשתמש בכלים כמו htop; top, ו־glances: שני האחרונים בעצם כלים למעקב ביצועים של מערכת Linux.

כדאי גם לקרוא את המאמרים הקשורים הבאים.

  1. איך למצוא את שם התהליך באמצעות מספר PID ב-Linux
  2. מצא תהליכי ריצה עליונים לפי שימוש בזיכרון ובמעבד הגבוה ביותר ב-Linux
  3. A Guide to Kill, Pkill, and Killall Commands to Terminate a Process in Linux
  4. איך למצוא ולהרוג תהליכים רצים ב-Linux
  5. איך להתחיל פקודת Linux ברקע ולנתק תהליך בטרמינל

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

Source:
https://www.tecmint.com/ps-command-examples-for-linux-process-monitoring/