Archive

Archive for September, 2012

ulimit -t 引起的kill血案

September 28th, 2012 8 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: ulimit -t 引起的kill血案

今天在内核群里印风同学问了个问题:

某台机器的ulimit -t 不知道为啥是300, 这是不是意味着程序占用CPU 300秒后会收到SIGKILL ?
我用gdb跑mysqld 跑了一会,收到SIGKILL信号,没有配置cgroup,也没啥后台脚本,看了下,就ulimit -t 比较诡异,其他机器都是unlimited。

简单的man ulimit下手册说:

-t The maximum amount of cpu time in seconds

貌似限制的是CPU最大执行时间,以秒为单位。
为了验证上面的说法,我特地设计了以下的场景:我们首先运行一个死循环程序消耗CPU时间,同时把进程的最大CPU消耗时间设定在180秒,期待在这个时间点进程会被杀掉。
以下是验证过程:

$ uname -r
2.6.32-131.21.1.tb477.el6.x86_64
$ ulimit -t 180
$ ulimit -t
180
$ cat busy.c
int main(int argc, char *argv[]) {
  for(;;);
  return 0;
}
$ gcc busy.c 
$ time ./a.out 
Killed

real	3m0.029s
user	2m59.966s
sys	0m0.007s

从现象来看,3分钟后我们的busy进程确实被杀了,dmesg也没说什么原因被杀。
Read more…

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Linux Tags: , ,