รับ ID ที่ผลิตโดยwmctrl -l
ฉันต้องการฆ่ากระบวนการที่เชื่อมโยงกับ ID หน้าต่าง
คุณจะแนะนำให้ทำอย่างไร '
รับ ID ที่ผลิตโดยwmctrl -l
ฉันต้องการฆ่ากระบวนการที่เชื่อมโยงกับ ID หน้าต่าง
คุณจะแนะนำให้ทำอย่างไร '
คำตอบ:
นอกจากรายการ PID ตามที่อธิบายไว้ในคำตอบอื่น ๆ โดย Florian Diesch และ Serg คุณสามารถใช้-ic
ตัวเลือกเพื่อปิดหน้าต่างโดยตรง:
$ wmctrl -ic 0x02e00085
หากคุณใช้wmctrl -lp
PID อยู่ในคอลัมน์ที่สาม
สำหรับ ID หน้าต่างที่ระบุคุณสามารถใช้
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(แทนที่ WID ด้วย ID หน้าต่างของคุณ)
col3
wmctrl
จริงแล้วมีการตั้งค่าสถานะอื่น-p
สำหรับการแสดงรายการ PID
bash-4.3$ wmctrl -lp
0x0380000a 0 4410 eagle Desktop
0x04800006 0 4275 eagle XdndCollectionWindowImp
0x04800009 0 4275 eagle unity-launcher
0x0480000c 0 4275 eagle unity-panel
0x0480000f 0 4275 eagle unity-dash
0x04800010 0 4275 eagle Hud
เมื่อคุณรู้สิ่งนี้มันเป็นการออกกำลังกายเล็กน้อยที่จะแยก PID ของหน้าต่างนั้นและส่งต่อไปยัง kill
wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
xkill -id [id]
นอกจากนี้คุณยังสามารถใช้ xkillยูทิลิตี้การทำงานที่แตกต่างจากคำตอบอื่น ๆ - มากกว่าปิดหน้าต่างหรือฆ่ากระบวนการโดยตรงก็สั่งให้เซิร์ฟเวอร์เอ็กซ์ตัดการเชื่อมต่อลูกค้าที่สร้างหน้าต่าง ซึ่งโดยปกติจะมีผลกระทบทำให้กระบวนการยุติแม้สำหรับกระบวนการระยะไกล
ข้อดีและข้อเสียของแต่ละวิธี:
wmctrl -c
ปิดหน้าต่าง "อย่างเรียบร้อย" - ราวกับว่าคุณคลิกปุ่มปิดของตัวจัดการหน้าต่างด้วยตัวเอง สิ่งนี้อาจไม่ฆ่ากระบวนการและอาจไม่ปิดหน้าต่างหากแอปพลิเคชันไม่ต้องการให้หน้าต่างถูกปิดหรือถูกแช่แข็ง
การใช้ pid จากwmctrl -lp
กับkill
มีการรับประกันเพื่อฆ่ากระบวนการ แต่อาจต้องใช้งานเพิ่มเติมหรือไม่ทำงานเลยหากกระบวนการอาจทำงานบนเครื่องอื่น
xkill
อาจไม่ยุติกระบวนการหากออกแบบมาเพื่อให้สามารถกู้คืนจากความล้มเหลวของเซิร์ฟเวอร์ X หรือการสูญเสียการเชื่อมต่อเครือข่าย แต่แอปพลิเคชันส่วนใหญ่จะล้มเหลวภายใต้สถานการณ์เหล่านี้ ไม่ว่าในกรณีใดหน้าต่างจะหายไป และกระบวนการระยะไกลและกระบวนการท้องถิ่นได้รับการจัดการเหมือนกัน
xkill
ใช้ เพียงพิมพ์xkill
เทอร์มินัลของคุณและคลิกที่หน้าต่างที่ต้องการ
xkill