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

วิธีฆ่ากระบวนการ Linux/แอปพลิเคชันที่ไม่ตอบสนองโดยใช้คำสั่ง 'xkill'


เราจะฆ่าทรัพยากร/กระบวนการใน Linux ได้อย่างไร แน่นอนว่าเราพบ PID ของทรัพยากรแล้วส่ง PID ไปยังคำสั่ง kill

หากพูดให้ถูกต้องมากขึ้น เราจะสามารถค้นหา PID ของทรัพยากร (เช่น Terminal) ได้ดังนี้:


ps -A | grep -i terminal

6228 ?        00:00:00 gnome-terminal

ในเอาต์พุตด้านบน หมายเลข '6228' คือ PID ของกระบวนการ (gnome-terminal) ใช้คำสั่ง kill เพื่อปิดกระบวนการดังที่แสดงด้านล่าง


kill 6228

คำสั่ง kill ส่งสัญญาณไปยังกระบวนการซึ่งมีการส่ง PID ไปพร้อมกับคำสั่ง

อีกทางหนึ่ง เราสามารถใช้คำสั่ง pkill ซึ่งจะฆ่ากระบวนการตามชื่อและคุณลักษณะอื่นๆ ของกระบวนการ หากต้องการฆ่ากระบวนการที่บอกว่าชื่อเทอร์มินัลเราต้องดำเนินการ:


pkill terminal

หมายเหตุ: ความยาวของชื่อกระบวนการใน pkill จำกัดไว้ที่ 15 อักขระ

pkill ดูเหมือนจะมีประโยชน์มากกว่าเนื่องจากคุณสามารถฆ่ากระบวนการโดยไม่ต้องค้นหา PID ของมัน แต่ถ้าคุณต้องการควบคุมระบบของคุณให้ดีขึ้น ไม่มีอะไรจะดีไปกว่าคำสั่ง 'kill' การใช้ kill จะทำให้คุณมีความเข้าใจที่ดีขึ้นว่าคุณกำลังฆ่ากระบวนการใด

เราได้กล่าวถึงคำแนะนำโดยละเอียดเกี่ยวกับคำสั่ง kill, pkill และ killall แล้ว

สำหรับผู้ที่ใช้งาน เซิร์ฟเวอร์ X มีเครื่องมืออื่นที่เรียกว่า xkill ซึ่งสามารถฆ่ากระบวนการจากหน้าต่าง X โดยไม่ต้องส่งชื่อกระบวนการหรือ PID ของมัน

ยูทิลิตี้ xkill บังคับให้เซิร์ฟเวอร์ X ปิดการสื่อสารไปยังไคลเอนต์ ซึ่งส่งผลให้ไคลเอนต์ถูกฆ่าโดยทรัพยากร X xkill ซึ่งเป็นส่วนหนึ่งของยูทิลิตี้ X11 นั้นมีประโยชน์มากในการฆ่าหน้าต่างที่ไม่จำเป็น

รองรับตัวเลือกเช่นการเชื่อมต่อกับ X Server เฉพาะ (-ชื่อที่แสดง) โดยใช้หมายเลขที่แสดงเมื่อ X Server หลายตัวทำงานบนโฮสต์พร้อมกันและฆ่าไคลเอนต์ทั้งหมด (-ทั้งหมด, ไม่แนะนำ) โดยมีหน้าต่างระดับบนสุดบนหน้าจอ รวมทั้งคำนึงถึงเฟรม (-frame)

หากต้องการรับรายชื่อลูกค้าทั้งหมดที่คุณอาจเรียกใช้:


xlsclients
ผลลัพธ์ตัวอย่าง

'  ' /usr/lib/libreoffice/program/soffice
deb  gnome-shell
deb  Docky
deb  google-chrome-stable
deb  soffice
deb  gnome-settings-daemon
deb  gnome-terminal-server

หากไม่มีการส่งผ่านตัวระบุทรัพยากรด้วย id xkill จะเปลี่ยนตัวชี้เมาส์เป็นสัญลักษณ์พิเศษ คล้ายกับ 'X' เพียงคลิกที่หน้าต่างที่คุณต้องการฆ่า และจะเป็นการหยุดการสื่อสารกับเซิร์ฟเวอร์หรือบอกว่าโปรแกรมถูกฆ่า


xkill

สิ่งสำคัญคือต้องสังเกตว่า xkill ไม่รับประกันว่าการปิดการสื่อสารจะยุติ/ยกเลิกการสื่อสารได้สำเร็จ แอปพลิเคชันส่วนใหญ่จะถูกหยุดทำงานเมื่อมีการปิดการสื่อสารไปยังเซิร์ฟเวอร์ อย่างไรก็ตาม บางส่วนอาจยังทำงานอยู่

ประเด็นที่ต้องกล่าวถึงที่นี่:

  1. เครื่องมือนี้ใช้งานได้เฉพาะเมื่อเซิร์ฟเวอร์ X11 กำลังทำงานอยู่ เนื่องจาก xkill เป็นส่วนหนึ่งของยูทิลิตี้ X11
  2. อย่าสับสนกับการปิดและการฆ่าทรัพยากร ในขณะที่ฆ่าทรัพยากร คุณอาจคาดหวังว่าทรัพยากรจะไม่ออกอย่างหมดจด
  3. นี่ไม่ใช่การแทนที่อรรถประโยชน์การฆ่า
ฉันจำเป็นต้องไปที่บรรทัดคำสั่ง Linux เพื่อเรียกใช้ xkill หรือไม่

ไม่ คุณไม่จำเป็นต้องเริ่มการทำงานของ xkill จาก Linux Command Line คุณสามารถตั้งค่าแป้นพิมพ์ลัดและเรียก xkill ได้เพียงแค่กดคีย์ผสมเดียวกัน

ต่อไปนี้คือวิธีตั้งค่าแป้นพิมพ์ลัดบนสภาพแวดล้อมเดสก์ท็อป gnome3 ทั่วไป

ไปที่ การตั้งค่า –> เลือกแป้นพิมพ์ คลิกที่ '+' และเพิ่มชื่อและคำสั่ง คลิกที่รายการใหม่แล้วกดปุ่มที่คุณต้องการใช้เป็นชุดคีย์ลัด ฉันทำ Ctrl+Alt+Shift+x

ครั้งถัดไปที่คุณต้องการฆ่าทรัพยากร X เพียงเรียกคีย์ผสม (Ctrl+Alt+Shift+x) แล้วคุณจะสังเกตเห็นว่าตัวชี้เมาส์ของคุณเปลี่ยนเป็น x คลิกที่ทรัพยากร x ที่คุณต้องการฆ่าและเสร็จสิ้น!