Üreten kimlikleri göz önüne alındığında wmctrl -l
, pencere kimliğine bağlı süreci öldürmek istiyorum.
Bunu nasıl öneriyorsun? '
Üreten kimlikleri göz önüne alındığında wmctrl -l
, pencere kimliğine bağlı süreci öldürmek istiyorum.
Bunu nasıl öneriyorsun? '
Yanıtlar:
Florian Diesch ve Serg'in diğer cevaplarında açıklandığı gibi PID'yi listelemenin yanı sıra -ic
, pencereyi doğrudan kapatma seçeneğini de kullanabilirsiniz :
$ wmctrl -ic 0x02e00085
wmctrl -lp
PID kullanıyorsanız üçüncü sütunda yer alır.
Belirli bir pencere kimliği için şunları kullanabilirsiniz:
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(WID'yi pencere kimliğinizle değiştirin)
col3
.
wmctrl
aslında -p
PID listelemek için başka bir bayrak var .
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
Bunu öğrendikten sonra, bu pencerenin PID'sini çıkarmak ve kill
wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
Ayrıca kullanabilirsiniz xkill -id [id]
. Xkill yarar diğer cevaplardan farklı çalışır - daha doğrusu penceresini kapatmadan veya doğrudan süreci öldürme yerine, pencere oluşturulan istemci bağlantısını kesmek için X sunucusunu bildirir. Bu normalde uzak bir işlem için bile işlemin sona ermesine neden olur.
Her yaklaşımın avantajları ve dezavantajları:
wmctrl -c
Bir pencereyi "incelikle" kapatır - pencere yöneticisinin kapat düğmesini kendiniz tıklamışsınız gibi. Bu işlem süreci öldürmeyebilir ve uygulama pencerenin kapatılmasını istemiyorsa veya donmuşsa, pencereyi kapatmayabilir.
Pid'i wmctrl -lp
birlikte kullanmanın kill
işlemi öldürmesi garanti edilir, ancak işlem farklı bir makinede çalışıyorsa fazladan iş gerektirebilir veya hiç çalışmayabilir.
xkill
bir X sunucusu çökmesinden veya ağ bağlantısı kaybından kurtulmak üzere tasarlanmışsa işlemi sonlandırmayabilir, ancak çoğu uygulama bu koşullar altında kolayca çökecektir. Her durumda, pencereler kaybolacak. Ve uzak süreçler ve yerel süreçler aynı şekilde ele alınır.
kullanın xkill
. Sadece xkill
terminalinizi yazın ve gerekli pencereye tıklayın.
Xkill