ps (מצב תהליכים) הוא כלי יישומים טבעי ב-Unix/Linux לצפייה במידע הנוגע לבחירת תהליכים רצים במערכת: הוא קורא את המידע הזה מהקבצים הווירטואליים במערכת הקבצים /proc. זהו אחד מכלי התקשורת החשובים לניהול מערכת במיוחד בתחום מעקב אחר תהליכים, כדי לעזור לך להבין מה קורה במערכת Linux.
יש לו מספר אפשרויות רבות לשינוי פלט שלו, אך תמצא מספר קטן מהן שימושיות בפועל לשימוש יומיומי.
קרא גם: כל מה שצריך לדעת על תהליכים ב-Linux [מדריך מקיף]
במאמר זה, נבחן 30 דוגמאות שימושיות של פקודות ps למעקב אחר תהליכים רצים במערכת Linux.
שים לב ש-ps מפיק פלט עם שורת כותרת, שמייצגת את המשמעות של כל עמודה במידע, תוכל למצוא את המשמעות של כל התוויות בעמודת ה-ps man page.
רשימת כל התהליכים בשיא המעטפת הנוכחית
1. אם תריץ את הפקודה ps ללא ארגומנטים, זה יציג תהליכים עבור המעטפת הנוכחית.
$ ps

הדפסת כל התהליכים בפורמטים שונים
2. הצגת כל תהליך פעיל במערכת Linux בפורמט ג'נרי (Unix/Linux).
$ ps -A OR $ ps -e

3. הצגת כל התהליכים בפורמט BSD.
$ ps au OR $ ps axu

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

הצגת תהליכים בריצת משתמש
5. ניתן לבחור את כל התהליכים ששייכים אליך (מבצע הפקודה ps, root במקרה זה), הקלד:
$ ps -x
6. כדי להציג את התהליכים של משתמש לפי זיהוי משתמש אמיתי (RUID) או שם, השתמש בדגל -U
.
$ ps -fU tecmint OR $ ps -fu 1000

7. כדי לבחור את התהליכים של משתמש לפי זיהוי משתמש אפקטיבי (EUID) או שם, השתמש באפשרות -u
.
$ ps -fu tecmint OR $ ps -fu 1000
הדפסת כל התהליכים שרצים כאדמין (זיהוי אמיתי ואפקטיבי)
8. הפקודה שלהלן מאפשרת לך להציג כל תהליך שרץ עם הרשאות משתמש root (זיהוי אמיתי ואפקטיבי) בפורמט משתמש.
$ ps -U root -u root

הצגת תהליכי קבוצה
9. אם ברצונך לרשום את כל התהליכים ששייכים לקבוצה מסוימת (זיהוי קבוצה אמיתי (RGID) או שם), הקלד.
$ ps -fG apache OR $ ps -fG 48

10. כדי לרשום את כל התהליכים ששייכים לשם קבוצה אפקטיבי (או סשן), הקלד.
$ ps -fg apache
הצגת תהליכים לפי PID ו-PPID
11. ניתן לרשום תהליכים לפי PID כדלקמן.
$ ps -fp 1178

12. כדי לבחור תהליך לפי PPID, הקלד.
$ ps -f --ppid 1154

13. בחר באמצעות רשימת PID.
$ ps -fp 2226,1154,1146

הצגת תהליכים לפי TTY
14. כדי לבחור תהליכים לפי tty, השתמש בדגל -t כדלקמן.
$ ps -t pts/0 $ ps -t pts/1 $ ps -ft tty1

הדפס עץ תהליכים
15. עץ תהליכים מציג איך תהליכים במערכת מקושרים זה לזה; תהליכים שההורים שלהם הושמדו מתאם לinit (או systemd).
$ ps -e --forest

16. ניתן גם להדפיס עץ תהליכים עבור תהליך נתון בצורה זו.
$ ps -f --forest -C sshd OR $ ps -ef --forest | grep -v grep | grep sshd

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

ציון פורמט פלט מותאם
בשימוש באפשרויות -o או –format, ps מאפשר לך לבנות פורמטי פלט שהוגדרו על ידי המשתמש כפי שמוצג למטה.
18. כדי לרשומ את כל מחלקי הפורמט, כלול את הדגל L
.
$ ps L
19. הפקודה למטה מאפשרת לך להציג את מזהה התהליך (PID), מזהה התהליך-הורה (PPID), שם המשתמש, ופקודה של תהליך.
$ ps -eo pid,ppid,user,cmd

20. למטה דוגמה נוספת של פורמט פלט מותאמת מראש המציגה קבוצת מערכת קבצים, ערך נחמד, זמן התחלה, וזמן שעבר של תהליך.
$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime

21. כדי למצוא שם תהליך בשימוש בזהות ה-PID שלו.
$ ps -p 1154 -o comm=

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

23. מצא את כל מזהי ה-PID של כל המופעים של תהליך, שימושי כאשר כתיבת סקריפטים שצריכים לקרוא PID מפלט std או קובץ.
$ ps -C httpd -o pid=

24. בדוק את זמן הביצוע של תהליך.
$ ps -eo comm,etime,user | grep httpd
הפלט למטה מראה שהשירות HTTPD רץ כבר שעה, 48 דקות ו-17 שניות.

פתרון בעיות בביצועי מערכת Linux
אם המערכת שלך לא פועלת כפי שצריך, לדוגמה, אם היא איטית באופן לא רגיל, ניתן לבצע בדיקת בעיות במערכת כך:
26. מצא תהליכים פועלים ראשיים לפי שימוש בזיכרון ובמעבד הגבוה ביותר ב-Linux.
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head OR $ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

27. כדי להרוג תהליכי Linux/יישומים לא מגיבים או כל תהליך שצורף בו זמן עיבוד גבוה.
ראשית, מצא את מזהה ה-PID של התהליך או היישום הלא פועל.
$ ps -A | grep -i stress
לאחר מכן השתמש ב-פקודת kill כדי לסיים אותו מיידית.
$ kill -9 2583 2584

הדפס מידע אבטחה
28. הצג קשר אבטחה (במיוחד עבור SELinux) כך.
$ ps -eM OR $ ps --context

29. תוכל גם להציג מידע אבטחה בפורמט שהמשתמש מגדיר עם פקודה זו.
$ ps -eo euser,ruser,suser,fuser,f,comm,label

ביצוע מעקב בזמן אמת של תהליכים באמצעות כלי ה-Watch
30. לבסוף, מאחר והפקודה ps מציגה מידע סטטי, תוכל להשתמש בכלי ה-Watch כדי לבצע מעקב בזמן אמת של תהליכים עם פלט חוזר, המוצג אחרי כל שניה כמו בפקודה הבאה (יש לציין פקודת ps מותאמת אישית להשגת המטרה שלך).
$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'

חשוב: ps מציג רק מידע סטטי, כדי להציג פלט שמתעדכן בתדירות תוכל להשתמש בכלים כמו htop; top, ו־glances: שני האחרונים בעצם כלים למעקב ביצועים של מערכת Linux.
כדאי גם לקרוא את המאמרים הקשורים הבאים.
- איך למצוא את שם התהליך באמצעות מספר PID ב-Linux
- מצא תהליכי ריצה עליונים לפי שימוש בזיכרון ובמעבד הגבוה ביותר ב-Linux
- A Guide to Kill, Pkill, and Killall Commands to Terminate a Process in Linux
- איך למצוא ולהרוג תהליכים רצים ב-Linux
- איך להתחיל פקודת Linux ברקע ולנתק תהליך בטרמינל
זה הכל לעכשיו. אם יש לך דוגמאות של פקודת ps שימושיות לשתף (לא לשכוח להסביר מה הן עושות), השתמש בטופס ההערות למטה.
Source:
https://www.tecmint.com/ps-command-examples-for-linux-process-monitoring/