ulimit限制之nproc问题

引用
#ulimit问题# 关于nproc设置:centos6,内核版本是2.6.32. 默认情况下,ulimit -u的值为1024,是/etc/security/limits.d/90-nproc.conf的值限制;注释掉这个限制后,值为95044;手工设置90-nproc.conf文件,值为新设置的值。想请 问这个95044是怎么来的?


这个问题挺有意思的,这里面有二个信息点:

1. 为什么limit配置文件是 /etc/security/limits.d/90-nproc.conf 而不是其他?
2. 为什么是nproc的值95044,而不是其他。

我们来简单的做下实验:
$ cat /etc/security/limits.d/90-nproc.conf         
*      soft    nproc   8933
$ ulimit -u
8933
 
$ cat /etc/security/limits.d/90-nproc.conf      #注释掉
#*      soft    nproc   8933
$ ulimit -u
385962


我们可以看出就是说当注释掉限制的话,不同的机器值是不同的。
在centos6的/etc/security/limits.d/90-nproc.conf限制下,个人用户可以修改ulimit-u,但root用户没法修改。
我们把etc/security/limits.d/90-nproc.conf改掉,会看到root的ulimit -u 可以修改成功。

我们一步步来看这个问题,首先看下 谁在使用 90-nproc.conf 这个文件:
$ cat t.stp
probe syscall.open.return {
  filename = user_string($filename)
  if (!isinstr(filename, "90-nproc.conf")) next;
  printf("%s %d\n", execname(), pid());
}
$ sudo stap t.stp
sshd 24844

猜你喜欢

转载自lotuo.iteye.com/blog/1867235