系统什么时候发送SIGKILL信号

when does the system send SIGKLILL

我的程序有时候会随机收到SIGKILL信号,gdb会提示:

Program terminated with signal SIGKILL, Killed.
The program no longer exists.
(gdb)
并且我找不到任何原因?什么时候系统会发送SIGKILL信号呢?我这里没有其他程序发送这个信号。。。

 

回答:
There are situations under which the kernel will send SIGKILL to a
process. Others have mentioned the Linux OOM killer; a more rarely
seen one is if you have a CPU-time resource hard limit set (such as
via the ulimit shell-builtin) then the kernel will send the process a
SIGKILL when the limit is reached.

在下列几种情况下,系统会发送SIGKILL信号:

1、OOM killer。out of memory 一般由于程序内存泄漏导致内存不足引起的。

2、CPU-time resource hard limit。用ulimit -t 查看系统对CPU使用时间有没有限制。如果超过限制,就会发送SIGKILL信号。

3、ptrace() (我也不太懂)
Another fairly 'standard' case is when the process tracing another
process using ptrace() dies without stopping the tracing; the traced
process is sent a SIGKILL then. Since the process in this case is
being actively traced with gdb, that would apparently not apply here,
but it does explain why killing gdb will kill a process that gdb is
attached to.

其他可能的情况:
-bad memory hardware (usually results in SIGSEGVs, but it looks like there are cases where SIGKILL will be generated)

内存硬件错误。通常会导致SIGSEGV,有时候也会发送SIGKILL。


- network or pseudo filesystem being ripped out from under the process

(不懂)


- hit the SysReq key

(不懂)


- various "secure computing" setups which restrict the operations a process can use
由于安全设置限制了进程的使用。

你可能感兴趣的:(系统什么时候发送SIGKILL信号)