什么是零信号?

时间:2015-08-27 20:52:13

标签: linux unix signals nagios

我正在寻找一个nagios插件,我发现了这段代码:

killall -0 $1

我尝试了这个并且它返回0以进行正在运行的进程,但它没有终止进程。

请解释此0值的含义以及它为何不会终止该过程。

2 个答案:

答案 0 :(得分:2)

signal -0只检查指定的进程是否正在运行。它并没有杀死它。如果你想杀死进程,请使用-9作为终止信号。

虽然此处未列出-0,但此链接解释了其他一些信号: http://man7.org/linux/man-pages/man7/signal.7.html

答案 1 :(得分:0)

来自man 2 kill

  

如果sig为0,则不发送任何信号,但错误检查仍然存在   执行;这可以用于检查进程ID的存在   或处理组ID。

kill(2)成功时返回0,否则返回-1。因此,对于零信号,假设进程具有足够的权限向目标进程发送信号,如果进程或进程组ID存在,则返回0,否则返回-1(和将errno设置为ESRCH)。请注意,手册页只是说明错误检查仍在执行,因此如果目标进程存在但它将返回-1并将errno设置为EPERM发送过程没有足够的权限向其发送信号。

killall(1)kill(1)命令实用程序的行为相似,因为它们使用了kill(2)

请注意,程序代码不应该依赖于此来根据进程的存在做出决策:在检查进程存在与使用该进程可能终止的信息(可能是新的)之间总会有一个时间窗口。 ,不相关的过程在该时间窗口开始,并且回收和使用相同的PID)。