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
คุณอาจต้องการอ่านบทความที่เกี่ยวข้องต่อไปนี้
- วิธีค้นหาชื่อกระบวนการโดยใช้หมายเลข PID ใน Linux
- ค้นหากระบวนการที่ทำงานสูงสุดตามหน่วยความจำและการใช้งาน CPU สูงสุดใน Linux
- คำแนะนำในการสั่ง Kill, Pkill และ Killall เพื่อยุติกระบวนการใน Linux
- วิธีค้นหาและฆ่ากระบวนการทำงานใน Linux
- วิธีเริ่มคำสั่ง Linux ในเบื้องหลังและแยกกระบวนการใน Terminal
นั่นคือทั้งหมดที่สำหรับตอนนี้. หากคุณมีตัวอย่าง ps command ที่เป็นประโยชน์ที่จะแบ่งปัน (อย่าลืมอธิบายว่ามันใช้ทำอะไร) ให้ใช้แบบฟอร์มความคิดเห็นด้านล่าง