เมื่อคุณกำลังทำงาน บางครั้งโปรแกรมของคุณก็หยุดทำงานกะทันหัน ในบางครั้ง โปรแกรมยังคงทำงานอยู่แต่ใช้โปรเซสเซอร์หรือหน่วยความจำสูง มีวิธีแก้ไขใน Linux โดยใช้ ps
(ป โรเซ่ S tatus) คำสั่ง เราจะแสดงวิธีใช้ ps
คำสั่งใน Linux เพื่อแสดงรายการกระบวนการที่กำลังทำงานอยู่และ PID ของกระบวนการ จากนั้นคุณสามารถค้นหาและฆ่ากระบวนการที่ใช้ทรัพยากรของคุณ
การใช้คำสั่ง “ps”
ps
คำสั่งใช้งานได้เอง มันจะส่งออกข้อมูลสี่คอลัมน์:
- PID :ตัวระบุเฉพาะของกระบวนการที่กำหนดโดยระบบ เป็นค่าที่เราใช้เพื่อหยุดกระบวนการ
- TTY :เทอร์มินัลที่เริ่มกระบวนการ
- เวลา :จำนวนเวลา CPU ทั้งหมดที่กระบวนการใช้
- CMD :คำสั่งที่สร้างกระบวนการ
โปรดทราบว่าเมื่อคุณใช้คำสั่งโดยไม่มีตัวเลือกใดๆ คำสั่งจะไม่แสดงข้อมูลให้คุณเห็นมากนัก ต่อไปนี้คือวิธีทำให้มีประโยชน์มากขึ้น
1. ระบุขั้นตอนของผู้ใช้ทั้งหมด
เมื่อมีการติดตั้งโปรแกรมบางโปรแกรม บางครั้งพวกเขายังสร้างผู้ใช้เพิ่มเติมเพื่อเรียกใช้กระบวนการ ในการแสดงรายการกระบวนการของผู้ใช้ ใช้ -e
ตัวเลือก:
ps -e
และผลลัพธ์:
PID TTY TIME CMD 1 ? 00:00:02 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:00 kworker/0:0 4 ? 00:00:00 kworker/0:0H 5 ? 00:00:00 kworker/u256:0 6 ? 00:00:00 mm_percpu_wq
2. รายการกระบวนการที่มีข้อมูลเพิ่มเติม
เป็นไปได้ที่จะมีข้อมูลเพิ่มเติมเมื่อคุณแสดงรายการกระบวนการที่ทำงานอยู่ ในการดำเนินการนี้ คุณสามารถใช้ ef
ตัวเลือก
ps -ef
และผลลัพธ์:
UID PID PPID C STIME TTY TIME CMD root 1 0 0 21:34 ? 00:00:03 /sbin/init maybe-ubiquity root 2 0 0 21:34 ? 00:00:00 [kthreadd] root 3 2 0 21:34 ? 00:00:00 [kworker/0:0] root 4 2 0 21:34 ? 00:00:00 [kworker/0:0H] root 6 2 0 21:34 ? 00:00:00 [mm_percpu_wq] root 7 2 0 21:34 ? 00:00:00 [ksoftirqd/0]
3. กรองกระบวนการตาม ID กระบวนการ
หากคุณทราบ ID กระบวนการของกระบวนการที่ทำงานอยู่ที่คุณต้องการแสดง คุณสามารถกรองเฉพาะด้วย -p
ธง. การดำเนินการนี้อาจใช้ PID หลายรายการเป็นอาร์กิวเมนต์ โดยคั่นด้วยเครื่องหมายจุลภาคเดียวและไม่มีช่องว่าง
ps -ef -p 1234,5678,9012
4. แสดงรายการกระบวนการที่ผู้ใช้เป็นเจ้าของ
คุณยังสามารถแสดงรายการกระบวนการที่ผู้ใช้เป็นเจ้าของด้วย u
ตัวเลือกตามด้วยชื่อผู้ใช้:
ps -u userName
และผลลัพธ์:
PID TTY TIME CMD 2832 ? 00:00:00 systemd 2842 ? 00:00:00 (sd-pam) 3043 ? 00:00:00 sshd 3044 pts/1 00:00:00 bash 18396 pts/1 00:00:00 ps
5. แสดงรายการกระบวนการที่ใช้งาน
เป็นไปได้ที่จะแสดงรายการกระบวนการทั้งหมดที่ทำงานอยู่โดยใช้ ax
ตัวเลือก:
ps -ax
และผลลัพธ์:
PID TTY STAT TIME COMMAND 1 ? Ss 0:02 /sbin/init maybe-ubiquity 2 ? S 0:00 [kthreadd] 3 ? I 0:00 [kworker/0:0] 4 ? I< 0:00 [kworker/0:0H] 6 ? I< 0:00 [mm_percpu_wq] 7 ? S 0:00 [ksoftirqd/0]
6. แสดงรายการกระบวนการที่ใช้งานอยู่กับผู้ใช้
เป็นไปได้ที่จะแสดงรายการกระบวนการที่ใช้งานอยู่ทั้งหมดกับผู้ใช้เมื่อคุณเพิ่ม -aux
ธง:
ps -aux
และผลลัพธ์:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 78132 9188 ? Ss 21:34 0:02 /sbin/init maybe-ubiquity root 2 0.0 0.0 0 0 ? S 21:34 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I 21:34 0:00 [kworker/0:0] root 4 0.0 0.0 0 0 ? I< 21:34 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? I< 21:34 0:00 [mm_percpu_wq] root 7 0.0 0.0 0 0 ? S 21:34 0:00 [ksoftirqd/0] root 8 0.0 0.0 0 0 ? I 21:34 0:00 [rcu_sched] root 9 0.0 0.0 0 0 ? I 21:34 0:00 [rcu_bh] root 10 0.0 0.0 0 0 ? S 21:34 0:00 [migration/0]
7. กรองกระบวนการตามชื่อของโปรแกรม
เป็นไปได้ที่จะดึงข้อมูลเกี่ยวกับโปรแกรมเฉพาะที่กำลังทำงานโดยใช้ตัวกรองบน ps
ผลลัพธ์:
ps -aux | grep docker
และผลลัพธ์:
root 1508 0.0 2.2 1518156 90868 ? Ssl 21:34 0:03 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock userkub+ 18429 0.0 0.0 13144 1108 pts/1 S+ 23:57 0:00 grep --color=auto docker
หรือคุณสามารถใช้ C
ตัวเลือกในการกรองกระบวนการตามชื่อ:
ps -C name
8. แสดงคอลัมน์เฉพาะ
นอกเหนือจากสี่คอลัมน์เริ่มต้น คุณยังสามารถรับ ps
เพื่อแสดงคอลัมน์ข้อมูลเพิ่มเติม ตัวอย่างเช่น:
ps -e -o pid,uname,pcpu,pmem,comm
-o
ตั้งค่าสถานะตัวเลือกการแสดงผลเฉพาะสำหรับ ps
ผลลัพธ์ของคำสั่ง ดูรายการตัวเลือกการแสดงผลมาตรฐานทั้งหมดสำหรับ ps
9. แสดงผลในรูปแบบแผนผังลำดับชั้น
ps -e --forest
สิ่งนี้ใช้งานศิลปะ ASCII เพื่อสร้างโครงสร้างแบบต้นไม้สำหรับแสดงกระบวนการ แสดงโปรเซสที่แยกจากกันและโปรเซสย่อยเป็นลูกหลานของโปรเซสพาเรนต์ที่เหมาะสม โดยจัดเรียงให้ตรงกัน หากต้องการซ่อน “กิ่งก้าน” ของต้นไม้ ให้ใช้ -H
แทนที่ --forest
.
10. แสดงเธรดกระบวนการ
ps -p 4041 -L
-L
ธงสลับบนจอแสดงผลแบบเธรดสำหรับฟังก์ชันใดๆ ของ ps มีประโยชน์มากที่สุดในการติดตามเธรดของกระบวนการเฉพาะ
11. แสดงกระบวนการรูททั้งหมด
ps -f -U root -u root
ดำเนินการค้นหากระบวนการทั้งหมดที่รันด้วยการระบุรูทที่แท้จริงและมีประสิทธิภาพ ซึ่งแสดงในรูปแบบความยาวเต็มด้วย -f
ธง. คุณสามารถรวมเข้ากับ -o
ตั้งค่าสถานะเพื่อปรับแต่งเอาต์พุต
ใช้คำสั่ง kill เพื่อหยุดกระบวนการ
เมื่อคุณพบกระบวนการทำงานผิดปกติแล้ว คุณสามารถใช้คำสั่ง kill เพื่อฆ่ากระบวนการที่กำลังทำงานอยู่ได้ คำสั่งส่งสัญญาณไปยังกระบวนการที่ยุติมัน เมื่อโปรแกรมของคุณถูกระงับ ส่วนใหญ่คุณจะต้องฆ่าพวกมันด้วย -9
ตัวเลือก
เอาต์พุตของ ps เป็นมุมมองทันที ไม่เหมือนกับ htop
, มันไม่ได้อัปเดตตัวเองแบบไดนามิก ซึ่งหมายความว่าคุณอาจต้องเรียกใช้หลายครั้งเพื่อให้ได้ภาพที่ชัดเจนว่ากระบวนการใดทำงานผิดปกติ หากต้องการดูกระบวนการล่าสุด คุณสามารถลองใช้คำสั่งอื่นๆ สำหรับระบบ Linux