有些应用程序只允许一个运行实例(例如 eclipse,如果您想使用相同的工作区)。因此,如果我从另一个位置登录,我必须终止/关闭上次从另一个位置登录时打开的应用程序。
我总是使用 kill 命令来终止正在运行的进程。但是,如果您终止进程,它可能不会保存一些对将来使用有用的状态。但是,如果您通过单击“关闭”按钮正确“关闭”它,它将正确保存状态。
有没有办法从命令行正确“关闭”应用程序?我知道这可能因应用程序而异,所以让我们更通用一点:如何向另一个正在运行的应用程序发送信号,并且该信号的工作方式就像我们单击顶部栏中的“关闭”按钮一样?
答案1
默认情况下,kill 命令将向SIGTERM
正在运行的进程发送(终止信号)。与 不同SIGKILL
,后者将强制终止进程,没有机会做出响应,而SIGTERM
进程可以拦截该信号,从而允许其正常终止。无论它是否真的做正常终止完全取决于进程本身;它可以轻松地终止自身或完全忽略信号。
您可以SIGTERM
通过在命令行上明确说明来确保发送的是您正在发送的信号而不是其他信号:
kill -s TERM <pid>
答案2
请注意,当使用pkill
而不是kill
来指定 TERM 时,语法为:
pkill -TERM <process-name>
pkill
就像 kill,但是你可以使用进程名称而不是 id。man pkill