ID được tạo bởi wmctrl -l
, tôi muốn có thể giết quá trình được liên kết với ID cửa sổ.
Làm thế nào bạn sẽ đề nghị để làm điều đó? '
ID được tạo bởi wmctrl -l
, tôi muốn có thể giết quá trình được liên kết với ID cửa sổ.
Làm thế nào bạn sẽ đề nghị để làm điều đó? '
Câu trả lời:
Bên cạnh việc liệt kê PID như được mô tả trong các câu trả lời khác của Florian Diesch và Serg, bạn có thể sử dụng -ic
tùy chọn để đóng cửa sổ trực tiếp:
$ wmctrl -ic 0x02e00085
Nếu bạn sử dụng wmctrl -lp
các PID nằm trong cột thứ ba.
Đối với một ID cửa sổ nhất định, bạn có thể sử dụng
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(thay thế WID bằng ID cửa sổ của bạn)
col3
.
wmctrl
thực sự có một cờ khác -p
để liệt kê 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
Một khi bạn biết điều này, đó là một bài tập nhỏ để trích xuất PID của cửa sổ đó và chuyển nó tới kill
wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
Bạn cũng có thể sử dụng xkill -id [id]
. Các xkill tiện ích công trình khác nhau từ các câu trả lời khác - chứ không phải là đóng cửa sổ hoặc giết chết quá trình trực tiếp, nó chỉ thị các máy chủ X để ngắt kết nối khách hàng đã tạo ra cửa sổ. Điều này thường có tác dụng làm cho quá trình chấm dứt ngay cả đối với một quy trình từ xa.
Ưu điểm và nhược điểm của từng phương pháp:
wmctrl -c
đóng một cửa sổ "duyên dáng" - như thể bạn đã tự bấm vào nút đóng của người quản lý cửa sổ. Điều này có thể không giết chết quá trình và thậm chí có thể không đóng cửa sổ, nếu ứng dụng không muốn cửa sổ bị đóng hoặc bị đóng băng.
Sử dụng pid từ wmctrl -lp
với kill
được đảm bảo để giết quá trình, nhưng có thể yêu cầu thêm công việc hoặc hoàn toàn không hoạt động nếu quá trình có thể đang chạy trên một máy khác.
xkill
có thể không chấm dứt quá trình, nếu nó được thiết kế để có thể phục hồi sau sự cố máy chủ X hoặc mất kết nối mạng, nhưng hầu hết các ứng dụng sẽ đơn giản gặp sự cố trong những trường hợp này. Trong mọi trường hợp, các cửa sổ sẽ biến mất. Và các quy trình từ xa và các quy trình địa phương được xử lý giống hệt nhau.
sử dụng xkill
. Chỉ cần gõ xkill
vào thiết bị đầu cuối của bạn và bấm vào cửa sổ yêu cầu.
xkill