З огляду на ідентифікатори, створені компанією wmctrl -l
, мені хочеться вбити процес, пов'язаний з ідентифікатором вікна.
Як би ти запропонував це зробити?
З огляду на ідентифікатори, створені компанією wmctrl -l
, мені хочеться вбити процес, пов'язаний з ідентифікатором вікна.
Як би ти запропонував це зробити?
Відповіді:
Крім переліку PID, як описано в інших відповідях Флоріана Діеша та Серга, ви можете скористатися -ic
опцією, щоб закрити вікно безпосередньо:
$ wmctrl -ic 0x02e00085
Якщо ви використовуєте wmctrl -lp
PID, знаходяться в третьому стовпці.
Для заданого ідентифікатора вікна ви можете використовувати
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(замініть WID на свій ідентифікатор вікна)
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 утиліта працює інакше, ніж інші відповіді - замість закриття вікна або вбити процес безпосередньо, він вказує сервера X , щоб відключити клієнт , який створив вікно. Це, як правило, спричиняє припинення процесу навіть для віддаленого процесу.
Переваги та недоліки кожного підходу:
wmctrl -c
закриває вікно "витончено" - так, як якщо б ви самі натиснули кнопку закриття менеджера вікон. Це може не вбити процес і навіть не закрити вікно, якщо програма не хоче, щоб вікно було закрите, або заморожене.
Використання pid від wmctrl -lp
with kill
гарантовано знищить процес, але може зажадати додаткових робіт або взагалі не працювати, якщо процес працює на іншій машині.
xkill
може не припинити процес, якщо він призначений для відновлення після збою сервера X або втрати підключення до мережі, але більшість додатків просто вийде з ладу за цих обставин. У будь-якому випадку вікон не буде. І віддалені процеси, і локальні, обробляються однаково.
використання xkill
. Просто введіть xkill
свій термінал і натисніть потрібне вікно.
xkill