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

วิธีฆ่ากระบวนการ Linux โดยใช้ Kill, Pkill และ Killall


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

ในบทความนี้ เราจะดูเกี่ยวกับกระบวนการฆ่า Linux และวิธีการค้นหาและยุติกระบวนการโดยใช้เครื่องมือและคำสั่งต่างๆ ใน Linux

กระบวนการลินุกซ์คืออะไร

พูดง่ายๆ ก็คือ กระบวนการก็เหมือนกับโปรแกรมที่กำลังรันอยู่บนระบบ และแต่ละกระบวนการก็มีหมายเลข ID พิเศษ (PID) ของตัวเอง อย่างไรก็ตาม บางครั้งโปรแกรมหรือกระบวนการที่ทำงานอยู่อาจทำงานผิดปกติหรืออาจหยุดตอบสนองหรือใช้ทรัพยากรระบบมากเกินไป

เมื่อสิ่งนั้นเกิดขึ้น เราต้องหยุดหรือ “ฆ่า” กระบวนการ และนี่คือจุดที่ คำสั่งฆ่า มีประโยชน์

คำสั่งฆ่าคืออะไร

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

คำสั่ง kill มีประโยชน์เมื่อคุณต้องการจัดการและควบคุมกิจกรรมของโปรแกรมต่างๆ บนระบบ Linux ของคุณ เช่น:

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

การใช้คำสั่ง kill จาก /usr/bin จะทำให้คุณมีคุณลักษณะพิเศษบางอย่างในการฆ่ากระบวนการตามชื่อกระบวนการโดยใช้ pkill ซึ่งจะระบุกระบวนการโดย ชื่อของพวกเขา.

วิธีค้นหา ID กระบวนการหรือชื่อกระบวนการ

ก่อนที่จะยุติกระบวนการที่กำลังทำงานอยู่ จำเป็นต้องระบุ Process ID (PID) หรือชื่อโดยใช้คำสั่ง ps ต่อไปนี้ซึ่งจะแสดงข้อมูลเกี่ยวกับกระบวนการที่ทำงานอยู่ทั้งหมดบนระบบด้วย PID (ID กระบวนการ) และข้อมูลอื่นๆ

ps -ef

หากคุณต้องการค้นหาชื่อกระบวนการ PID คุณสามารถใช้คำสั่ง grep ที่จะแสดงรายการกระบวนการทั้งหมดที่ทำงานบนระบบและกรองผลลัพธ์เพื่อแสดงเฉพาะกระบวนการที่มีคำว่า “mariadb< /แข็งแกร่ง>“.

ps -ef | grep mariadb

หรือคุณสามารถค้นหา PID ของกระบวนการตามชื่อได้โดยตรงโดยใช้คำสั่ง pgrep ดังที่แสดง

pgrep mariadb

วิธีฆ่ากระบวนการใน Linux

ก่อนที่คุณจะฆ่า หยุด หรือยุติกระบวนการ ให้คิดถึงการอนุญาตก่อน หากคุณเป็นผู้ใช้รูท คุณสามารถหยุดกระบวนการใดๆ ก็ได้ แต่ถ้าคุณเป็นผู้ใช้ทั่วไป คุณจะต้องเพิ่ม “sudo” ก่อนคำสั่ง หรือสลับไปที่รูทด้วย “ su” เพื่อใช้คำสั่งยุติ

ไวยากรณ์ทั่วไปสำหรับ คำสั่ง kill คือ:

kill [signal or option] PID(s)
OR
sudo kill [signal or option] PID(s)

สำหรับ คำสั่ง kill ชื่อสัญญาณ อาจเป็น:

ชัดเจนจากพฤติกรรมข้างต้น:

  • SIGTERM เป็นวิธีเริ่มต้นและปลอดภัยที่สุดในการหยุดกระบวนการ
  • SIGHUP เป็นวิธีฆ่ากระบวนการที่ปลอดภัยน้อยกว่า SIGTERM
  • SIGKILL เป็นวิธีที่ไม่ปลอดภัยที่สุดในสามวิธีข้างต้น ในการฆ่ากระบวนการที่ยุติกระบวนการโดยไม่บันทึก

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

kill -l

แม้ว่าจะมีสัญญาณให้เลือกหลายสัญญาณ แต่ในกรณีส่วนใหญ่เราใช้เฉพาะ SIGKILL (9) และ SIGTERM (15) เท่านั้น

ในการฆ่ากระบวนการ เราจำเป็นต้องทราบรหัสกระบวนการของกระบวนการ กระบวนการ เป็นตัวอย่างหนึ่งของโปรแกรม ทุกครั้งที่โปรแกรมเริ่มทำงาน จะมีการสร้าง PID เฉพาะสำหรับกระบวนการนั้นโดยอัตโนมัติ

ทุกกระบวนการใน Linux มี pid กระบวนการแรกที่เริ่มต้นเมื่อระบบ Linux ถูกบูทคือ – กระบวนการเริ่มต้น ดังนั้นจึงได้รับการกำหนดค่าเป็น '1' ในกรณีส่วนใหญ่

Init เป็นกระบวนการหลักและไม่สามารถถูกฆ่าด้วยวิธีนี้ ซึ่งช่วยให้มั่นใจได้ว่ากระบวนการหลักจะไม่ถูกฆ่าโดยไม่ได้ตั้งใจ เริ่มต้น ตัดสินใจและยอมให้ตัวเองถูกฆ่า โดยที่การฆ่าเป็นเพียงคำขอให้ปิดระบบเท่านั้น

ก่อนที่เราจะก้าวไปข้างหน้าและดำเนินการ คำสั่ง kill ประเด็นสำคัญบางประการที่ควรทราบ:

  • ผู้ใช้สามารถฆ่ากระบวนการทั้งหมดของเขาได้
  • ผู้ใช้ไม่สามารถฆ่ากระบวนการของผู้ใช้รายอื่นได้
  • ผู้ใช้ไม่สามารถฆ่ากระบวนการที่ระบบใช้อยู่ได้
  • ผู้ใช้รูทสามารถฆ่ากระบวนการระดับระบบและกระบวนการของผู้ใช้คนใดก็ได้

หากต้องการฆ่ากระบวนการ mariadb PID ให้ใช้คำสั่ง kill ตามที่แสดง

kill -9 3383

คำสั่งข้างต้นจะฆ่ากระบวนการที่มี pid=3383 โดยที่ PID คือ ค่าตัวเลข ของกระบวนการ

อีกวิธีหนึ่งในการทำหน้าที่เดียวกันสามารถเขียนใหม่ได้เป็น

kill -SIGTERM 3383

ในทำนองเดียวกัน 'kill -9 PID' ก็คล้ายคลึงกับ 'kill -SIGKILL PID' และในทางกลับกัน

เพื่อยืนยันว่ากระบวนการสิ้นสุดลงแล้ว คุณสามารถใช้ คำสั่ง ps ได้อีกครั้ง

ps -ef | grep mariadb

วิธีฆ่าหลายกระบวนการใน Linux

หากต้องการยุติกระบวนการต่างๆ ใน Linux โดยใช้รหัสกระบวนการ (PID) คุณสามารถใช้คำสั่ง kill ร่วมกับหมายเลข PID ที่เกี่ยวข้องได้

ขั้นแรก ระบุ PID ของกระบวนการที่คุณต้องการยุติโดยใช้คำสั่ง ps หรือ pgrep

ps aux | grep apache2
OR
pgrep apache2

เมื่อคุณมี PID แล้ว ให้ใช้คำสั่ง kill เพื่อยุติการทำงาน

kill -9 PID1 PID2 PID3

วิธีฆ่ากระบวนการใน Linux โดยใช้ชื่อกระบวนการ

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

คุณต้องทราบชื่อกระบวนการ ก่อนที่จะฆ่า และการป้อนชื่อกระบวนการผิดอาจทำให้คุณเสียหายได้

pkill mysqld

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

วิธีฆ่ากระบวนการใน Linux โดยใช้คำสั่ง Killall

ความแตกต่างหลักระหว่าง killall และ kill ก็คือ killall สามารถจบกระบวนการด้วยชื่อของมัน ในขณะที่คำสั่ง kill อาศัยรหัสกระบวนการ (pid)

หากต้องการฆ่าอินสแตนซ์ mysql ทั้งหมดพร้อมกับกระบวนการลูก ให้ใช้คำสั่งดังต่อไปนี้

killall mysqld
OR
pkill mysqld

คุณสามารถตรวจสอบสถานะของกระบวนการได้ตลอดเวลาว่ากระบวนการกำลังทำงานอยู่หรือไม่ โดยใช้คำสั่งด้านล่าง

systemctl status mysql
pgrep mysql
ps -aux | grep mysql

เครื่องมือตรวจสอบระบบกราฟิก Linux เช่น htop หรือ gnome-system-monitor มีอินเทอร์เฟซที่เป็นมิตรต่อผู้ใช้ในการค้นหาและปิดกระบวนการ

บทสรุป

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