ulimit 用来限制每个用户可使用的资源,如 CPU、内存、句柄等

查看 ulimit

命令格式: ulimit   [-SHacdefilmnpqrstuvx]

  • 参数 a:将列出所有资源限制
  • ulimit a.png
  • 参数 S:表示软限制,当超过限制值会报警
  • 参数 H:表示硬限制,必定不能超过限制值
  • 参数 c:当某些程序发生错误时,系统可能会将该程序在内存中的信息写成文件 (除错用),这种文件就被称为核心- 文件 (core file)。此为限制每个核心文件的最大容量
  • 参数 d:每个进程数据段的最大值
  • 参数 f:当前 shell 可创建的最大文件容量
  • 参数 l:可以锁定的物理内存的最大值
  • 参数 m:可以使用的常驻内存的最大值
  • 参数 n:每个进程可以同时打开的最大文件句柄数
  • 参数 p:管道的最大值
  • 参数 s:堆栈的最大值
  • 参数 t:每个进程可以使用 CPU 的最大时间
  • 参数 u:每个用户运行的最大进程并发数
  • 参数 v:当前 shell 可使用的最大虚拟内存

修改 ulimit

命令格式: ulimit   [-SHcdefilmnpqrstuvx]   [limit] 在查看的命令后面加上限制值,就可以调整某一项限制,但只对当前登录 shell 有效。 参数 S 表示设置软限制;参数 H 表示设置硬限制;当都不指定时,表示设置软限制和硬限制均为指定值。

永久修改 ulimit

所谓永久,是指每次登陆 shell 时,都会按配置重新设定 ulimit,以达到永久生效的效果。 步骤一:使用root用户修改   /etc/security/limits.conf 添加如下内容: [root@CentOS646506 ~]# vim /etc/security/limits.conf * hard nproc 64000 * soft nproc 64000 * hard nofile 64000 * soft nofile 64000 以上内容表示,将 -u 和 -n 的软限制和硬限制同时修改为 64000。

步骤二:修改 /etc/pam.d/login 添加如下内容:

[root@CentOS646506 ~]# vim /etc/pam.d/login session required pam_limits.so 以上内容表示,在登录时使用 pam 管理 limit。

步骤三:修改 /etc/profile 添加如下内容

[root@CentOS646506 ~]# vim /etc/profile ulimit -u 64000 ulimit -n 64000 每次登陆 shell 后,会初始执行这两条 ulimit 命令,并使其生效。

使配置生效 重新登录或使用 source /etc/profile 立即生效。

source 使当前 shell 对指定文件内容生效。

/etc/security/limits.conf 配置详解

格式: <domain>   <type>   <item>   <value>

  1. domain 是指生效实体,可以是:
  • 用户名
  • 也可以通过 @group 指定用户组
  • 使用 * 表示默认值
  1. type 指限制类型
  • soft 软限制
  • hard 硬限制
  1. 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

参考文章

ulimit 命令详解