Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้คำสั่ง ps ใน Linux เพื่อฆ่ากระบวนการ

วิธีใช้คำสั่ง ps ใน Linux เพื่อฆ่ากระบวนการ

เมื่อคุณกำลังทำงาน บางครั้งโปรแกรมของคุณก็หยุดทำงานกะทันหัน ในบางครั้ง โปรแกรมยังคงทำงานอยู่แต่ใช้โปรเซสเซอร์หรือหน่วยความจำสูง มีวิธีแก้ไขใน Linux โดยใช้ ps ( โรเซ่ S tatus) คำสั่ง เราจะแสดงวิธีใช้ ps คำสั่งใน Linux เพื่อแสดงรายการกระบวนการที่กำลังทำงานอยู่และ PID ของกระบวนการ จากนั้นคุณสามารถค้นหาและฆ่ากระบวนการที่ใช้ทรัพยากรของคุณ

การใช้คำสั่ง “ps”

ps คำสั่งใช้งานได้เอง มันจะส่งออกข้อมูลสี่คอลัมน์:

  • PID :ตัวระบุเฉพาะของกระบวนการที่กำหนดโดยระบบ เป็นค่าที่เราใช้เพื่อหยุดกระบวนการ
  • TTY :เทอร์มินัลที่เริ่มกระบวนการ
  • เวลา :จำนวนเวลา CPU ทั้งหมดที่กระบวนการใช้
  • CMD :คำสั่งที่สร้างกระบวนการ
วิธีใช้คำสั่ง ps ใน Linux เพื่อฆ่ากระบวนการ

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

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
วิธีใช้คำสั่ง ps ใน Linux เพื่อฆ่ากระบวนการ

8. แสดงคอลัมน์เฉพาะ

นอกเหนือจากสี่คอลัมน์เริ่มต้น คุณยังสามารถรับ ps เพื่อแสดงคอลัมน์ข้อมูลเพิ่มเติม ตัวอย่างเช่น:

ps -e -o pid,uname,pcpu,pmem,comm
วิธีใช้คำสั่ง ps ใน Linux เพื่อฆ่ากระบวนการ

-o ตั้งค่าสถานะตัวเลือกการแสดงผลเฉพาะสำหรับ ps ผลลัพธ์ของคำสั่ง ดูรายการตัวเลือกการแสดงผลมาตรฐานทั้งหมดสำหรับ ps

9. แสดงผลในรูปแบบแผนผังลำดับชั้น

ps -e --forest

สิ่งนี้ใช้งานศิลปะ ASCII เพื่อสร้างโครงสร้างแบบต้นไม้สำหรับแสดงกระบวนการ แสดงโปรเซสที่แยกจากกันและโปรเซสย่อยเป็นลูกหลานของโปรเซสพาเรนต์ที่เหมาะสม โดยจัดเรียงให้ตรงกัน หากต้องการซ่อน “กิ่งก้าน” ของต้นไม้ ให้ใช้ -H แทนที่ --forest .

10. แสดงเธรดกระบวนการ

ps -p 4041 -L
วิธีใช้คำสั่ง ps ใน Linux เพื่อฆ่ากระบวนการ

-L ธงสลับบนจอแสดงผลแบบเธรดสำหรับฟังก์ชันใดๆ ของ ps มีประโยชน์มากที่สุดในการติดตามเธรดของกระบวนการเฉพาะ

11. แสดงกระบวนการรูททั้งหมด

ps -f -U root -u root
วิธีใช้คำสั่ง ps ใน Linux เพื่อฆ่ากระบวนการ

ดำเนินการค้นหากระบวนการทั้งหมดที่รันด้วยการระบุรูทที่แท้จริงและมีประสิทธิภาพ ซึ่งแสดงในรูปแบบความยาวเต็มด้วย -f ธง. คุณสามารถรวมเข้ากับ -o ตั้งค่าสถานะเพื่อปรับแต่งเอาต์พุต

ใช้คำสั่ง kill เพื่อหยุดกระบวนการ

เมื่อคุณพบกระบวนการทำงานผิดปกติแล้ว คุณสามารถใช้คำสั่ง kill เพื่อฆ่ากระบวนการที่กำลังทำงานอยู่ได้ คำสั่งส่งสัญญาณไปยังกระบวนการที่ยุติมัน เมื่อโปรแกรมของคุณถูกระงับ ส่วนใหญ่คุณจะต้องฆ่าพวกมันด้วย -9 ตัวเลือก

วิธีใช้คำสั่ง ps ใน Linux เพื่อฆ่ากระบวนการ

เอาต์พุตของ ps เป็นมุมมองทันที ไม่เหมือนกับ htop , มันไม่ได้อัปเดตตัวเองแบบไดนามิก ซึ่งหมายความว่าคุณอาจต้องเรียกใช้หลายครั้งเพื่อให้ได้ภาพที่ชัดเจนว่ากระบวนการใดทำงานผิดปกติ หากต้องการดูกระบวนการล่าสุด คุณสามารถลองใช้คำสั่งอื่นๆ สำหรับระบบ Linux