Linux学习路线之二【limit资源设置】

limit资源设置

前言

Linux中limit参数设定一般可以通过ulimit命令或编辑/etc/security/limits.conf重新加载的方式使之生效
通过ulimit比较直接,但只在当前的session有效,limits.conf中可以根据用户和限制项使用户在下次登录中生效.

一、ulimit 命令

1.1ulimit命令查看用户状态

ulimit -a 显示当前的各种用户进程限制。

[angel@linux ~]$ ulimit -a
core file size             (blocks, -c)  1024
data seg size              (kbytes, -d)  unlimited
scheduling priority                (-e)  0
file size                  (blocks, -f)  unlimited
pending signals                    (-i)  unlimited
max locked memory          (kbytes, -l)  unlimited
max memory size            (kbytes, -m)  unlimited
open files                         (-n)  819200
pipe size               (512 bytes, -p)  8
POSIX message queues        (bytes, -q)  unlimited
real-time priority                 (-r)  0
stack size                 (kbytes, -s)  unlimited
cpu time                  (seconds, -t)  unlimited
max user processes                 (-u)  4096
virtual memory             (kbytes, -v)  unlimited
file locks                         (-x)  unlimited

其他参数:

-H 设置硬资源限制.
-S 设置软资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes
-u <程序数目>  用户最多可开启的程序数目

1.2 ulimit命令设置

通过ulimit直接在当前session设置,只当前session生效。

[angel@linux ~]$ ulimit -s 
unlimited
[angel@linux ~]$ ulimit -s 819200
[angel@linux ~]$ ulimit -s 
819200

二、修改配置文件,永久生效设置

2.1 修改limit设置

示例如下:

  [angel@linux ~]# tail -n 20 /etc/security/limits.conf
  #<domain>    <type> <item>  <value>
  #
  *             soft  core          1024       #soft 进程数
  *             hard  core          1024       #hard 进程数
   
  *             soft  nproc         unlimited  #soft 进程数
  *             hard  nproc         unlimited  #hard 进程数
  
  *             soft  memlock       unlimited  #soft max locked-in-memory address space
  *             hard  memlock       unlimited  #hard max locked-in-memory address space
   
  *             soft  stack         unlimited  #soft max stack size
  *             hard  stack         unlimited  #hard max stack size 
  
  *             soft  nofile        819200    #soft 文件句柄数
  *             hard  nofile        819200    #hard 文件句柄数 
  *             soft  sigpending    unlimited  #soft pending signals
  *             hard  sigpending    unlimited  #hard pending signals
   
  *             soft  msgqueue      unlimited  #soft POSIX message queue
  *             hard  msgqueue      unlimited  #hard POSIX message queue
  # End of file
  [angel@linux ~]$

** 注: * 即所有用户,同时也可以指定具体用户名,如root、angel

“soft” 和 “hard” 的区别

soft  xxx  : 代表警告的设定,可以超过这个设定值,但是超过后会有警告。
 
hard  xxx  : 代表严格的设定,不允许超过这个设定的值。

如:soft 设为2048,hard设为4096 ,则当你使用数在1 ~ 2048 可以随便使用,2048~4096时会出现警告信息,大于4096时,就会报错。

“nproc” 和 "nofile"的区别

nproc  : 是操作系统级别对每个用户创建的进程数的限制
 
nofile : 是每个进程可以打开的文件数的限制

2.2 修改系统的配置

打开 vim /etc/security/limits.d/90-nproc.conf 设置限制数量,第一列表示用户,* 表示所有用户

*              soft      nproc       unlimited
*              hard      nproc       unlimited
*              soft      nofile      unlimited
*              hard      nofile      unlimited
root           soft      nproc       unlimited
root           hard      nproc       unlimited
root           soft      nofile      unlimited
root           hard      nofile      unlimited

soft nproc :单个用户可用的最大进程数量(超过会警告);
hard nproc:单个用户可用的最大进程数量(超过会报错);
soft nofile :可打开的文件描述符的最大数(超过会警告);
hard nofile :可打开的文件描述符的最大数(超过会报错);

重启生效

[angel@linux ~] reboot
上一篇:c++/oop---类和对象


下一篇:第05章_排序与分页(基础篇)