什么是终止进程的非攻击性方法?

什么是终止进程的非攻击性方法?

我想通过命令行(例如 Firefox 或 Thunderbird)关闭程序。该程序运行良好,理论上我可以直接选择“文件”>“关闭”。但是,我想通过命令行来执行此操作,因此这不是一个选项。我可以终止该进程(例如pkill firefox),但从它的声音来看,这是关闭程序的相当残酷的方式。事实上,我习惯于将此作为最后的手段,尤其是当程序挂起时。老实说,我不知道这是否是退出程序的正确方法。是吗?或者有更好的方法来关闭程序吗?

答案1

kill向进程发送信号,默认发送 TERM 信号。 TERM 信号可以被进程“捕获”,即它们可以监视它,并且当接收到它时它们可以采取行动。

在许多情况下,Linux 进程在发送 TERM 信号时会正常运行 - 即它们会自我整理然后干净地关闭。假设开发人员已经正确处理了这种情况,那么这kill是关闭许多进程的完全有效的方法。

它是否适用于任何给定的流程取决于开发人员。

只有一些信号(例如 KILL)无法被捕获,您通过kill运行来发送 KILL kill -9,这对进程的破坏性更大,因为它们没有机会进行清理。

答案2

用作kill -15 [pid/name]允许进程执行清理的“正常”终止

用作kill -9 [pid/name]“覆盖”终止,立即终止进程。

答案3

可以模拟窗口关闭。但我不确定如何可靠地识别窗口。 (即杀死firefox而不杀死gedit firefox-bug.txt)。正如所评论的,基本的权衡是您是否想要鼓励用户交互(密切确认对话)。

https://unix.stackexchange.com/a/247163/29483

相关内容