[quote]#ulimit问题# 关于nproc设置:centos6,内核版本是2.6.32. 默认情况下,ulimit -u的值为1024,是/etc/security/limits.d/90-nproc.conf的值限制;注释掉这个限制后,值为95044;手工设置90-nproc.conf文件,值为新设置的值。想请 问这个95044是怎么来的?[/quote]
这个问题挺有意思的,这里面有二个信息点:
1. 为什么limit配置文件是 /etc/security/limits.d/90-nproc.conf 而不是其他?
2. 为什么是nproc的值95044,而不是其他。
我们来简单的做下实验:
我们可以看出就是说当注释掉限制的话,不同的机器值是不同的。
在centos6的/etc/security/limits.d/90-nproc.conf限制下,个人用户可以修改ulimit-u,但root用户没法修改。
我们把etc/security/limits.d/90-nproc.conf改掉,会看到root的ulimit -u 可以修改成功。
我们一步步来看这个问题,首先看下 谁在使用 90-nproc.conf 这个文件:
这个问题挺有意思的,这里面有二个信息点:
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