如何通过 id 来 xkill 一个应用程序?

如何通过 id 来 xkill 一个应用程序?

我需要使用终端模拟给定应用程序的键盘快捷键(ALT + F4)的行为。

例如如果我打开编辑然后单击ALT+ F4,然后 GEDIT 将被 xkilled。如果我想使用终端实现同样的事情,我该怎么做?

以下命令(为了终止 gedit 进程)可以正常工作:

kill $eval `pidof gedit`

然而,命令

xkill -id gedit

提示我单击应用程序客户端窗口以将其杀死,这是我从一开始就想避免的事情。

我想要实现此行为的原因是,即使您按 ALT+F4 键,某些应用程序客户端仍会保持其进程运行。我的需求是,我有一个在每次登录时都会启动的应用程序,我需要在其出现 3 或 5 秒后自动关闭其客户端。

答案1

相当于中的函数xkill。如果你还没有安装,请运行windowkillxdotoolxdotool

sudo apt-get install xdotool

使用此工具,您确实可以通过使用搜索选项并指定其类别来关闭窗口:

xdotool search --class gedit windowkill

您可以使用 找到进程的 pid getwindowpid,但只需指定窗口类的名称(即--class gedit)就足够了。该工具是非交互式从某种意义上说,您不需要像有时使用 那样单击窗口来关闭它xkill

xdotool有关可用选项的更多信息,man xdotool请参阅Ubuntu 在线手册页。手册页很好地解释了如何xdotool更轻松地将其合并到脚本中xkill

因此我认为xdotool'swindowkill 选项可能就是您想要的,而且它可能比 更方便xkill

然而,如果您仍然想使用xkill并向其提供窗口的资源 id,以便它在不提示您的情况下关闭窗口,您可以解析的输出xwininfo,如本例中使用程序Meld

xkill -id $(xwininfo -name Meld | awk -F ':*"*' '{print $3}')

但是,发送到的程序的名称xwininfo必须是正确的大小写,因此请事先启动该程序,并且在我们的示例中,查看它是否是Meldmeld

我更喜欢xdotool上面给出的命令,因为大小写不必正确:Meld或者meld将起作用,因为search --name开关使用正则表达式来匹配给定的字符串并忽略大小写。

答案2

您可以使用killall它将向您指定的应用程序发送 TERMSIG(终止信号)。您可以使用以下命令使用 killall

killall <id> 

例如,你可以使用以下命令关闭 Firefox

kilall firefox

如果由于某种原因您必须找到应用程序/进程的正确 ID,您可以随时使用它ps来查看所有正在运行的进程及其名称。

答案3

kill -9 <id>

肯定会杀死与该 pid 相关的所有内容。

为了找到 pid,我使用

ps -u $USER -f | grep gedit

如果你需要经常执行这些命令,可以将它们合并到一个命令中

答案4

使用top命令获取特定进程 ID。记下它并输入以下命令来终止进程。

kill <process id>

相关内容