Linux—资源限制ulimit

概述

对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)。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注