通常在图形环境中运行应用程序时,当我想关闭它时,我单击X窗口左上角的 或转到File > Close。
我有时想使用命令行从终端通过 ssh 远程关闭这些程序,现在我使用kill命令,但我想知道它与从自身正确退出应用程序一样。
从man kill默认信号看来是 15) SIGTERM,这个信号会告诉应用程序我试图关闭清理、关闭打开的文件、保存内容吗?
如果我想从终端进行,有没有更好的方法?
正常关闭应用程序的典型方法是使用kill -TERM 1234,其中1234是窗口的 PID。然而,问题在于图形应用程序旨在侦听来自 X 服务器本身的特定信号,而不是侦听TERM信号。
这意味着您需要在您和 X 服务器之间使用某种代理来传达您想要发送适当信号的信息。你当然可以编写一个 C 程序,但是有一个wmctrl程序(不出所料是用 C 编写的)可以做到这一点。
用法wmctrl很简单:
wmctrl -c :SELECT: # close window that will be selected with pointer
wmctrl -c :ACTIVE: # close currently active window
wmctrl -ic <numeric id> # close window with specific id in hex
Run Code Online (Sandbox Code Playgroud)
默认情况下未安装,因此请使用 sudo apt-get install wmctrl
有很多用途wmctrl远不只是关闭窗口,所以请参阅我的更多答案和 Jacob Vlijm 的有关使用它的脚本示例