如何杀死 - 轻轻地?

Vol*_*gel 7 process kill zombie-process

如果我想尽可能小心和礼貌地终止进程,
我应该在终止命令中使用哪些信号,以什么顺序?

我想给程序任何时间来清理,如果它愿意的话,所以只是发送一个SIGTERM将是苛刻的,我想?

我会最后使用SIGKILL(" -9"),这很清楚。

但是从哪个开始呢?SIGHUP? 哪些信号只是浪费时间?


相关信号供参考,来自

man 7 signal

  Signal     Value     Action   Comment
   ??????????????????????????????????????????????????????????????????????
   SIGHUP        1       Term    Hangup detected on controlling terminal
                                 or death of controlling process
   SIGINT        2       Term    Interrupt from keyboard
   SIGQUIT       3       Core    Quit from keyboard
   SIGKILL       9       Term    Kill signal
   SIGPIPE      13       Term    Broken pipe: write to pipe with no
                                 readers
   SIGTERM      15       Term    Termination signal
Run Code Online (Sandbox Code Playgroud)

Adi*_*ari 13

SIGTERM在我看来是要走的路。它在大多数情况下都有效。那些不起作用的,SIGKILL无论如何你都必须做。
SIGTERM为进程提供足够的机会来释放它所拥有的所有资源并干净利落地关闭。

  • @VolkerSiegel 你有 3 个不同的人告诉你使用 SIGTERM。如果您是信号方面的专家,为什么还要问这个问题? (6认同)
  • 许多程序可以安全地发送 SIGTERM。 (2认同)
  • @VolkerSiegel 如果程序未编码以捕获 SIGTERM 并“友好地”处理它,那么它很可能也不会处理 SIGINT 友好的。如果程序能够从信号“友好”终止,则 SIGTERM 几乎肯定会被处理。可以这样想:如果您正在编写一个想要干净、友好的关机程序,您会捕获 SIGINT 而忽略 SIGTERM 吗?这是没有意义的。 (2认同)