Chu*_*sta 26 process kill signals
我从人们那里收到了很多混合的信息,并且想知道您使用的内容是否真的没有太大区别。
kill 'x'
killall 'x'
kill -9 'x'
Run Code Online (Sandbox Code Playgroud)
这些是到目前为止我被告知要使用的一些选项,但有些人说 kill -9 只是矫枉过正,kill 本身不起作用,等等。
有没有人对在终止进程(及其状态)的最标准情况下应该使用哪一个有任何建议?
[编辑] 我正在寻找当您想停止流程执行时要使用的内容,以便您可以从一开始就运行一个新流程
Ada*_*man 24
有许多信号的默认处置是终止进程。最终的终止信号是 SIGKILL,因为它无法处理并且进程别无选择,只能死亡。然而,这也意味着如果您发送它,则该过程将被剥夺清理的机会。因此,良好的礼貌需要发送像 SIGTERM 这样的信号,该信号可以首先处理,并且只有在一段时间后进程没有退出时才发送 SIGKILL。
请注意, SIGINT 和 SIGQUIT 不是任意进程终止的良好候选者。由于它们可以从终端的键盘生成,许多应用程序将它们用于特殊目的。例如,python 解释器使用 SIGINT 来生成KeyboardInterrupt
异常(也在交互式 python 会话中它只是返回到提示),而 JVM 使用 SIGQUIT 来转储堆栈跟踪。SIGINT 和 SIGQUIT 对于大多数标准命令行实用程序(如find
或 )仍然有效cat
。
在系统关闭期间,大多数 UNIX 和 Linux 系统向所有进程发送 SIGTERM,然后等待 5 秒,然后是 SIGKILL。这是安全关闭任意进程的推荐方法。
还要注意,即使是 SIGKILL 也可能不会终止陷入不间断等待的进程,直到进程唤醒。