วิธีฆ่ากระบวนการ 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 และดูแลสุขภาพของคุณ อย่าลืมแบ่งปันความคิดเห็นอันมีค่าของคุณในส่วนความคิดเห็น