Pertanyaan Bagaimana saya bisa membunuh jendela X tertentu


ID yang diberikan yang diproduksi oleh wmctrl -l, Saya ingin dapat membunuh proses yang terkait dengan ID jendela.

Bagaimana Anda akan menyarankan untuk melakukannya? '


9
2017-10-05 09:31


asal




Jawaban:


Selain daftar PID seperti yang dijelaskan dalam jawaban lain oleh Florian Diesch dan Serg, Anda dapat menggunakan -ic pilihan untuk menutup jendela secara langsung:

$ wmctrl -ic 0x02e00085

10
2017-10-05 09:54



Jika proses macet, mungkin Anda tidak menyadari bahwa Anda menutup jendela. Jendela akan hilang, tetapi prosesnya akan tetap ada dan mungkin mengkonsumsi CPU dan RAM. - kasperd


Jika Anda menggunakan wmctrl -lp PID berada di kolom ketiga.

Untuk ID jendela yang diberikan dapat Anda gunakan

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

(ganti WID dengan ID jendela Anda)


9
2017-10-05 09:45





wmctrl sebenarnya memiliki bendera lain -p untuk daftar 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

Setelah Anda mengetahuinya, ini adalah latihan sepele mengekstraksi PID jendela itu dan meneruskannya kill

wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill

8
2017-10-05 09:46





Anda juga bisa menggunakan xkill -id [id]. Itu xkill utilitas bekerja secara berbeda dari jawaban yang lain - daripada menutup jendela atau membunuh proses secara langsung, ia memerintahkan server X untuk memutuskan sambungan klien yang menciptakan jendela. Ini biasanya memiliki efek menyebabkan proses untuk mengakhiri bahkan untuk proses jarak jauh.

Keuntungan dan kerugian masing-masing pendekatan:

  • wmctrl -c menutup jendela "dengan anggun" - seolah-olah Anda telah mengklik tombol dekat manajer jendela itu sendiri. Ini mungkin tidak mematikan proses, dan bahkan tidak menutup jendela, jika aplikasi tidak ingin jendela ditutup, atau dibekukan.

  • Menggunakan pid dari wmctrl -lp dengan kill dijamin akan membunuh proses, tetapi mungkin memerlukan kerja tambahan atau tidak berfungsi sama sekali jika prosesnya mungkin berjalan pada mesin yang berbeda.

  • xkill tidak dapat menghentikan proses, jika dirancang untuk dapat memulihkan dari kerusakan server X atau kehilangan konektivitas jaringan, tetapi sebagian besar aplikasi hanya akan crash dalam keadaan ini. Bagaimanapun, windows akan hilang. Dan proses remote dan yang lokal ditangani secara identik.


6
2017-10-05 16:02





menggunakan xkill . Ketik saja xkill di terminal Anda dan klik pada jendela yang dibutuhkan.

xkill


1
2017-10-06 08:51