目录
问题解决
直接在/etc/security/limits.conf中修改,或者在/etc/security/limits.d/下新建文件进行配置,都应该是OK的。
但是,在上述两处追加如下配置,一直不生效。
* soft nofile 10240
* hard nofile 65536
我们知道配置环境变量需要source一下(或者重新登录),配置/etc/sysctl.conf执行sysctl -p生效。那么,配置了limit参数后如何生效呢?重新登录(通过远程访问服务(openssh)、本地console登录都可以,但是 su - 切换是不可以的)!
但是,重新登录执行ulimit -n回显仍然是1024(而非10240)
重新登录生效的原因:
limits.conf是由PAM模块pam_limits.so来加载的,通过ssh访问(sshd_config需配置UsePAM yes)会调用sshd PAM,里面包含:session required pam_limits.so;同样,console本地登录会调用login PAM,login同样包含session required pam_limits.so。而su切换回调用su PAM 它里面(以及su-pam调用的其他pam里也没有)
截至目前,我们仍然没有解决Ubuntu上,配置
* soft nofile 10240
* hard nofile 65536不生效的问题。先上解决方法:
* soft nofile 10240
* hard nofile 65536
root soft nofile 10240
root hard nofile 65536原因:
*只对非 root 用户起作用。而 root 用户的限制,必须显式添加。
ulimit扩展
ulimit 用来限制每个用户可使用的资源。
设置limit的三种方法:
- 可以通过ulimit命令做临时设置
- 也可以通过配置文件(limits.conf)永久设置。
- 当然,也可以配置到/etc/profile(也就是每次加载profile都执行一次ulimit命令~~)
# 临时设置soft nofile 为65535(当然只会在当前用户下生效)
ulimit -Sn 65535
# 永久性配置soft nofile 为65535 --- limits.conf方式
vi /etc/security/limits.conf
……
* soft nofile 10240
# 永久性配置soft nofile 为65535 --- profile方式
vi /etc/profile
……
ulimit -Sn 65535
ulimit命令
ulimit [-SHcdefilmnpqrstuvx] [limit]
参数
S
表示设置软限制(超过限制值会报警);参数H
表示设置硬限制(不能超过限制值);当都不指定时,表示设置软限制和硬限制均为指定值。不指定[limit]值则代表查询,且默认查询软限制,如:ulimit -a等同于ulimit -Sa,查询硬限制使用 ulimit -Ha。
- 参数 a: 列出所有当前资源极限值
- 参数 c:设置core文件的最大值,单位:blocks
- 参数 d:每个进程数据段的最大值,单位:kbytes
- 参数 f:当前 shell 可创建的文件size的最大值,单位:blocks
- 参数 i:待处理的信号最大值
- 参数 l:可以锁定的物理内存的最大值,单位:kbytes
- 参数 m:可以使用的常驻内存的最大值,单位:kbytes
- 参数 n:每个进程可以同时打开的最大文件数
- 参数 p:管道的最大值,单位:512 bytes
- 参数 q:POSIX的消息队列的最大值,单位:kbytes
- 参数 s:堆栈的最大值,单位:kbytes
- 参数 t:每个进程可以使用 CPU 的最大时间,单位:seconds
- 参数 u:每个用户运行的最大进程并发数
- 参数 v:当前 shell 可使用的最大虚拟内存,单位:kbytes
- 参数 x:所能锁住的文件的最大个数
ulimits.conf文件
<domain> <type> <item> <value> domain 是指生效实体
用户名 :a username
<min_uid>:<max_uid> :an uid range
@group 指定用户组 :a groupname, with @group syntax.
@<min_gid>:<max_gid> : a gid range
* 表示默认值
%:<gid> :只对maxlogins生效
%group : 同上
type 指限制类型
soft 软限制
hard 硬限制
item 限制资源
core 同 ulimit -c
data 同 ulimit -d
fsize 同 ulimit -f
memloc 同 ulimit -l
nofile 同 ulimit -n
stack 同 ulimit -s
cpu 同 ulimit -t
nproc 同 ulimit -u
maxlogins 指定用户可以同时登录的数量
maxsyslogins 系统可以同时登录的用户数
priority 用户进程运行的优先级
locks 用户可以锁定的文件最大值
sigpengding 同 ulimit -i
msgqueue 同 ulimit -q
举例:
* soft core 0
* hard nofile 512
@student hard nproc 20
@faculty soft nproc 20
@faculty hard nproc 50
ftp hard nproc 0
@student - maxlogins 4
:123 hard cpu 5000
@500: soft cpu 10000
600:700 hard locks 10