特定のXウィンドウを強制終了する方法


9

によって生成されたIDを前提wmctrl -lとして、ウィンドウIDにリンクされているプロセスを強制終了できるようにしたいと思います。

あなたはそれをどのように提案しますか?」

回答:


10

Florian DieschとSergによる他の回答で説明されているようにPIDをリストすることに加えて、-icオプションを使用してウィンドウを直接閉じることができます。

$ wmctrl -ic 0x02e00085

3
プロセスがスタックしている場合、ウィンドウを閉じたことに気付かない場合があります。ウィンドウはなくなりますが、プロセスはまだそこにあり、おそらくCPUとRAMを消費します。
kasperd


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のユーティリティは、他の回答とは異なる動作します-ではなく、ウィンドウを閉じるか、直接プロセスを殺すよりも、それはウィンドウを作成したクライアントの接続を切断するためにXサーバに指示します。これは通常、リモートプロセスであってもプロセスを終了させる効果があります。

各アプローチの長所と短所:

  • wmctrl -c「優雅に」ウィンドウを閉じます-まるでウィンドウマネージャーの閉じるボタンを自分でクリックしたかのように。アプリケーションがウィンドウを閉じたくない、またはフリーズしている場合、これによってプロセスが強制終了されることはなく、ウィンドウを閉じることさえできません。

  • pid from wmctrl -lpを使用すると、プロセスが強制終了killされることが保証されていますが、プロセスが別のマシンで実行されている場合は、追加の作業が必要になるか、まったく機能しない可能性があります。

  • xkillXサーバーのクラッシュまたはネットワーク接続の喪失から回復できるように設計されている場合、はプロセスを終了しない場合がありますが、ほとんどのアプリケーションはこれらの状況下で単純にクラッシュします。いずれにしても、ウィンドウは消えてしまいます。また、リモートプロセスとローカルプロセスは同じように処理されます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.