ฉันจะฆ่าหน้าต่าง X ที่ระบุได้อย่างไร


9

รับ ID ที่ผลิตโดยwmctrl -lฉันต้องการฆ่ากระบวนการที่เชื่อมโยงกับ ID หน้าต่าง

คุณจะแนะนำให้ทำอย่างไร '

คำตอบ:


10

นอกจากรายการ PID ตามที่อธิบายไว้ในคำตอบอื่น ๆ โดย Florian Diesch และ Serg คุณสามารถใช้-icตัวเลือกเพื่อปิดหน้าต่างโดยตรง:

$ wmctrl -ic 0x02e00085

3
หากกระบวนการติดค้างอาจไม่สังเกตเห็นว่าคุณปิดหน้าต่าง หน้าต่างจะหายไป แต่กระบวนการจะยังคงอยู่ที่นั่นและอาจใช้ CPU และ RAM
kasperd

9

หากคุณใช้wmctrl -lpPID อยู่ในคอลัมน์ที่สาม

สำหรับ ID หน้าต่างที่ระบุคุณสามารถใช้

kill $(wmctrl -lp | awk '/^WID/ {print $3}')

(แทนที่ WID ด้วย ID หน้าต่างของคุณ)


อาจจะทำความสะอาดแทน awk คุณก็สามารถใช้ col3
Pablo Bianchi

8

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

6

xkill -id [id]นอกจากนี้คุณยังสามารถใช้ xkillยูทิลิตี้การทำงานที่แตกต่างจากคำตอบอื่น ๆ - มากกว่าปิดหน้าต่างหรือฆ่ากระบวนการโดยตรงก็สั่งให้เซิร์ฟเวอร์เอ็กซ์ตัดการเชื่อมต่อลูกค้าที่สร้างหน้าต่าง ซึ่งโดยปกติจะมีผลกระทบทำให้กระบวนการยุติแม้สำหรับกระบวนการระยะไกล

ข้อดีและข้อเสียของแต่ละวิธี:

  • wmctrl -cปิดหน้าต่าง "อย่างเรียบร้อย" - ราวกับว่าคุณคลิกปุ่มปิดของตัวจัดการหน้าต่างด้วยตัวเอง สิ่งนี้อาจไม่ฆ่ากระบวนการและอาจไม่ปิดหน้าต่างหากแอปพลิเคชันไม่ต้องการให้หน้าต่างถูกปิดหรือถูกแช่แข็ง

  • การใช้ pid จากwmctrl -lpกับkillมีการรับประกันเพื่อฆ่ากระบวนการ แต่อาจต้องใช้งานเพิ่มเติมหรือไม่ทำงานเลยหากกระบวนการอาจทำงานบนเครื่องอื่น

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


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.