ค้นหาเว็บไซต์

30 ตัวอย่าง 'ps Command' ที่มีประโยชน์สำหรับการตรวจสอบกระบวนการ Linux


ps (สถานะกระบวนการ) เป็นยูทิลิตี Unix/Linux ดั้งเดิมสำหรับการดูข้อมูลเกี่ยวกับการเลือกกระบวนการที่ทำงานอยู่บนระบบ โดยจะอ่านข้อมูลนี้จากไฟล์เสมือนใน/ระบบไฟล์ proc เป็นหนึ่งในยูทิลิตี้ที่สำคัญสำหรับการดูแลระบบโดยเฉพาะภายใต้การตรวจสอบกระบวนการ เพื่อช่วยให้คุณเข้าใจว่าเกิดอะไรขึ้นในระบบ Linux

มันมีตัวเลือกมากมายสำหรับการจัดการเอาท์พุต อย่างไรก็ตามคุณจะพบว่าตัวเลือกจำนวนเล็กน้อยนั้นมีประโยชน์จริงสำหรับการใช้งานรายวัน

อ่านเพิ่มเติม: ทั้งหมดที่คุณต้องการรู้เกี่ยวกับกระบวนการใน Linux [คู่มือฉบับสมบูรณ์]

ในบทความนี้ เราจะดูตัวอย่างคำสั่ง ps ที่มีประโยชน์ 30 ตัวอย่างสำหรับตรวจสอบกระบวนการที่ทำงานอยู่บนระบบ Linux

โปรดทราบว่า ps สร้างผลลัพธ์ด้วยบรรทัดหัวเรื่อง ซึ่งแสดงถึงความหมายของแต่ละคอลัมน์ของข้อมูล คุณสามารถค้นหาความหมายของป้ายกำกับทั้งหมดได้ใน หน้า man page ps

แสดงรายการกระบวนการทั้งหมดในเชลล์ปัจจุบัน

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. หากต้องการแสดงกระบวนการของผู้ใช้ตาม ID ผู้ใช้จริง (RUID) หรือชื่อ ให้ใช้แฟล็ก -U

ps -fU tecmint
OR
ps -fu 1000

7. หากต้องการเลือกกระบวนการของผู้ใช้ตาม ID ผู้ใช้ที่มีประสิทธิภาพ (EUID) หรือชื่อ ให้ใช้ตัวเลือก -u .

ps -fu tecmint
OR
ps -fu 1000

พิมพ์กระบวนการทั้งหมดที่ทำงานเป็นรูท (ID จริงและมีประสิทธิภาพ)

8. คำสั่งด้านล่างช่วยให้คุณสามารถดูทุกกระบวนการที่ทำงานด้วยสิทธิ์ผู้ใช้ รูท (ID จริงและมีผลบังคับใช้) ในรูปแบบผู้ใช้

ps -U root -u root 

แสดงกระบวนการกลุ่ม

9. หากคุณต้องการแสดงรายการกระบวนการทั้งหมดที่กลุ่มใดกลุ่มหนึ่งเป็นเจ้าของ (ID กลุ่มจริง (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 จากเอาต์พุตหรือไฟล์มาตรฐาน

ps -C httpd -o pid=

24. ตรวจสอบเวลาดำเนินการของกระบวนการ

ps -eo comm,etime,user | grep httpd

ผลลัพธ์ด้านล่างแสดงว่าบริการ HTTPD ทำงานเป็นเวลา 1 ชั่วโมง 48 นาที และ 17 วินาที

แก้ไขปัญหาประสิทธิภาพของระบบ Linux

หากระบบของคุณไม่ทำงานอย่างที่ควรจะเป็น เช่น หากทำงานช้าผิดปกติ คุณสามารถดำเนินการแก้ไขปัญหาระบบบางอย่างได้ดังต่อไปนี้

26. ค้นหากระบวนการที่ทำงานสูงสุดตามหน่วยความจำสูงสุดและการใช้งาน CPU ใน Linux

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
OR
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

27. เพื่อฆ่ากระบวนการ Linux/แอปพลิเคชันที่ไม่ตอบสนองหรือกระบวนการใดๆ ที่ใช้เวลานาน CPU สูง

ขั้นแรก ค้นหา 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 Utility

30. สุดท้ายนี้ เนื่องจาก ps แสดงข้อมูลคงที่ คุณจึงสามารถใช้ยูทิลิตี้ watch ดำเนินการตรวจสอบกระบวนการแบบเรียลไทม์ด้วยเอาต์พุตซ้ำๆ ซึ่งจะแสดงทุกวินาทีตามคำสั่งด้านล่าง (ระบุ คำสั่ง ps ที่กำหนดเองเพื่อให้บรรลุวัตถุประสงค์ของคุณ)

watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'

ข้อสำคัญ: ps แสดงเฉพาะข้อมูลคงที่ หากต้องการดูเอาต์พุตที่อัปเดตบ่อยครั้ง คุณสามารถใช้เครื่องมือเช่น htop; ด้านบนและภาพรวม: สองอันสุดท้ายเป็นเครื่องมือตรวจสอบประสิทธิภาพของระบบ Linux

คุณอาจต้องการอ่านบทความที่เกี่ยวข้องต่อไปนี้

  1. วิธีค้นหาชื่อกระบวนการโดยใช้หมายเลข PID ใน Linux
  2. ค้นหากระบวนการที่ทำงานสูงสุดตามหน่วยความจำและการใช้งาน CPU สูงสุดใน Linux
  3. คำแนะนำในการสั่ง Kill, Pkill และ Killall เพื่อยุติกระบวนการใน Linux
  4. วิธีค้นหาและฆ่ากระบวนการทำงานใน Linux
  5. วิธีเริ่มคำสั่ง Linux ในเบื้องหลังและแยกกระบวนการใน Terminal

นั่นคือทั้งหมดที่สำหรับตอนนี้. หากคุณมีตัวอย่าง ps command ที่เป็นประโยชน์ที่จะแบ่งปัน (อย่าลืมอธิบายว่ามันใช้ทำอะไร) ให้ใช้แบบฟอร์มความคิดเห็นด้านล่าง