我需要使用终端模拟给定应用程序的键盘快捷键(ALT + F4)的行为。
例如如果我打开编辑然后单击ALT+ F4,然后 GEDIT 将被 xkilled。如果我想使用终端实现同样的事情,我该怎么做?
以下命令(为了终止 gedit 进程)可以正常工作:
kill $eval `pidof gedit`
然而,命令
xkill -id gedit
提示我单击应用程序客户端窗口以将其杀死,这是我从一开始就想避免的事情。
我想要实现此行为的原因是,即使您按 ALT+F4 键,某些应用程序客户端仍会保持其进程运行。我的需求是,我有一个在每次登录时都会启动的应用程序,我需要在其出现 3 或 5 秒后自动关闭其客户端。
答案1
相当于中的函数xkill
。如果你还没有安装,请运行windowkill
xdotool
xdotool
sudo apt-get install xdotool
使用此工具,您确实可以通过使用搜索选项并指定其类别来关闭窗口:
xdotool search --class gedit windowkill
您可以使用 找到进程的 pid getwindowpid
,但只需指定窗口类的名称(即--class gedit
)就足够了。该工具是非交互式从某种意义上说,您不需要像有时使用 那样单击窗口来关闭它xkill
。
xdotool
有关可用选项的更多信息,man xdotool
请参阅Ubuntu 在线手册页。手册页很好地解释了如何xdotool
更轻松地将其合并到脚本中xkill
。
因此我认为xdotool's
windowkill 选项可能就是您想要的,而且它可能比 更方便xkill
。
然而,如果您仍然想使用xkill
并向其提供窗口的资源 id,以便它在不提示您的情况下关闭窗口,您可以解析的输出xwininfo
,如本例中使用程序Meld
:
xkill -id $(xwininfo -name Meld | awk -F ':*"*' '{print $3}')
但是,发送到的程序的名称xwininfo
必须是正确的大小写,因此请事先启动该程序,并且在我们的示例中,查看它是否是Meld
或meld
。
我更喜欢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>