概述
对shell及由shell启动的进程可用的资源提供控制,当然前提是当前的操作系统允许这样的控制。其中-H与-S的参数分别指的是对给定的资源进行硬限制与软限制。硬限制一旦设置就不能再增长了;软限制可以增加到硬限制的值。如果不指定-H或-S,那就意味着既是软限制又是硬限制。
限制值可以是资源指定规格中的一个数值,或者是指定值hard、soft或unlimited中的一个,分别代表当前的硬限制、软限制或无限制。
除非指定了-H选项,否则默认打印资源当前的软限制。
一些基础命令
1、查看当前用户下的所有限制
# ulimit --help //打印所有ulimit可以设置的值及帮助
# ulimit -a //打印所有软限制
# ulimit -Ha //打印所有硬限制
2、限制一些值
ulimit -H -l 6291456 //限制最大锁内存为6GB,通过-a参数可知该选项单位为KB
永久生效
使用ulimit命令进行的设置的限制值都是在当前系统运行时生效,重新启动或关闭计算机后,这些设置会失效。如果想要永久生效,需要将配置添加到文件【/etc/security/limits.conf】中,方法如下:
1、在会话中添加pam_limits.so模块
如果想要limits.conf配置文件生效,需要pam_limits模块。这个pam_limits的PAM模块可以在用户会话中,为系统资源设置限制。uid=0的用户(Linux操作系统root用户的uid为0)也会受到这些限制。
编译下面两个文件,添加会话的pam模块配置:
vim /etc/pam.d/login
vim /etc/pam.d/sshd
添加如下内容:
session required pam_limits.so
2、确认ssh_config中的配置
在使用Linux系统的过程中,我们大多数的时候都会使用ssh来完成管理。因此要确保ssh的pam配置生效。
vim /etc/ssh/sshd_config
确认是否存在如下配置,如果被注释请打开,如果不存在请添加。
UsePAM yes
3、在limits.conf中添加配置
vim /etc/security/limits.conf
内容如下:
root soft memlock 6291456
root hard memlock 6291456
上面的两条配置是将用户root的最大锁定内存设置为6GB。
一定要注意:Ubuntu不支持使用星号(*)来代表所有用户,使用星号后设置会不生效。
* soft memlock 6291456
* hard memlock 6291456
4、重新启动计算机
一些重要配置项
1、最大锁定内存(max locked memory)
可锁定在内存中的最大大小。确保这些被锁定的内存一直是RAM,并且不会被交换到交换磁盘。这会使用访问内存的速度更快。因为交换磁盘的速度是很慢的。
# 命令式
ulimit -H -l 6291456
ulimit -S -l 6291456
#配置文件式
root soft memlock 6291456
root hard memlock 6291456
2、核心文件大小
创建的核心文件的最大值。核心转存是一个系统快照,它包括内存(RAM)、上下文件切换(Context switch)以及处理器寄存器(Processor registers)。