【问题标题】:difference in using kill -9 with kill SIGUSR2 [closed]使用 kill -9 和 kill SIGUSR2 的区别[关闭]
【发布时间】:2012-12-01 15:35:37
【问题描述】:

使用kill命令格式的操作有什么区别,在什么场景下使用哪一种。

kill -9 process-id
kill SIGUSR2 process-id

【问题讨论】:

  • kill -l 为您提供信号。 SIGUSR2 (12) 与 SIGKILL (9) 完全不同。除此之外,很大程度上取决于应用程序如何处理信号,即 SIGUSR2。例如,您可以使用signal(在 C 中)拦截 SIGUSR2 并执行您想要的任何任务。
  • kill SIGUSR2 pid 对我来说似乎是一个终止语法错误。你可能对kernel.org/doc/man-pages/online/pages/man7/signal.7.html感兴趣。

标签: shell kill-process sigkill


【解决方案1】:

如果你想将SIGUSR2 发送到一个进程,你可以使用:

kill -SIGUSR2 $pid
kill -USR2 $pid
kill -10 $pid   # This will vary with platform

如果你想将SIGKILL 发送到一个进程,你可以使用:

kill -SIGKILL $pid
kill -KILL $pid
kill -9 $pid

不确定如何回答您关于“哪种情况”的问题。如果你想发送USR2,那么你使用前三个命令之一。如果您想发送KILL,请使用后者之一。您通常希望避免使用KILL,因为接收到KILL 的进程无法自行清理。另一方面,很多软件写得不好,只能通过SIGKILL终止。通常认为发送TERM 更礼貌,然后等待一段时间再发送TERM,然后再次发送KILLUSR2 通常只对期待它并会以某种有用方式响应的程序有用。如果程序不期望该信号并且没有采取任何措施来忽略它,则默认行为是终止。

请注意,SIGUSR2 的具体信号编号会有所不同。根据平台的不同,它可能是 10、12、31,可能还有许多其他值。最好避免显式设置该值。 standardized 的唯一信号编号是 1、2、3、6、9、14 和 15,因此 9 始终是 SIGKILL,但 SIGUSR2 可能(而且确实!)会有所不同。

【讨论】:

    猜你喜欢
    • 2017-09-29
    • 2016-07-26
    • 2013-10-15
    • 2013-07-09
    • 2016-05-02
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多