一、 /etc/security/limits.conf 详解

/etc/security/limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,而且只针对于单个会话。 该设置不会影响系统服务的资源限制。还要注意 /etc/security/limits.d/ 的这个目录,

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

  1. # /etc/security/limits.conf
  2. #
  3. #This file sets the resource limits for the users logged in via PAM.
  4. 该文件为通过PAM登录的用户设置资源限制。
  5. #It does not affect resource limits of the system services.
  6. #它不影响系统服务的资源限制。
  7. #Also note that configuration files in /etc/security/limits.d directory,
  8. #which are read in alphabetical order, override the settings in this
  9. #file in case the domain is the same or more specific.
  10. 请注意/etc/security/limits.d下按照字母顺序排列的配置文件会覆盖 /etc/security/limits.conf中的
  11. domain相同的的配置
  12. #That means for example that setting a limit for wildcard domain here
  13. #can be overriden with a wildcard setting in a config file in the
  14. #subdirectory, but a user specific setting here can be overriden only
  15. #with a user specific setting in the subdirectory.
  16. 这意味着,例如使用通配符的domain会被子目录中相同的通配符配置所覆盖,但是某一用户的特定配置
  17. 只能被字母路中用户的配置所覆盖。其实就是某一用户A如果在/etc/security/limits.conf有配置,当
  18. /etc/security/limits.d子目录下配置文件也有用户A的配置时,那么A中某些配置会被覆盖。最终取的值是 /etc/security/limits.d 下的配置文件的配置。
  19. #
  20. #Each line describes a limit for a user in the form:
  21. #每一行描述一个用户配置
  22. #<domain> <type> <item> <value>
  23. #Where:
  24. #<domain> can be:
  25. # - a user name 一个用户名
  26. # - a group name, with @group syntax 用户组格式为@GROUP_NAME
  27. # - the wildcard *, for default entry 默认配置为*,代表所有用户
  28. # - the wildcard %, can be also used with %group syntax,
  29. # for maxlogin limit
  30. #
  31. #<type> can have the two values:
  32. # - "soft" for enforcing the soft limits
  33. # - "hard" for enforcing hard limits
  34. softhard和-,soft指的是当前系统生效的设置值,软限制也可以理解为警告值。
  35. hard表名系统中所能设定的最大值。soft的限制不能比hard限制高,用-表名同时设置了softhard的值。
  36. #<item> can be one of the following: <item>可以使以下选项中的一个
  37. # - core - limits the core file size (KB) 限制内核文件的大小。
  38. # - data - max data size (KB) 最大数据大小
  39. # - fsize - maximum filesize (KB) 最大文件大小
  40. # - memlock - max locked-in-memory address space (KB) 最大锁定内存地址空间
  41. # - nofile - max number of open file descriptors 最大打开的文件数(以文件描叙符,file descripter计数)
  42. # - rss - max resident set size (KB) 最大持久设置大小
  43. # - stack - max stack size (KB) 最大栈大小
  44. # - cpu - max CPU time (MIN) 最多CPU占用时间,单位为MIN分钟
  45. # - nproc - max number of processes 进程的最大数目
  46. # - as - address space limit (KB) 地址空间限制
  47. # - maxlogins - max number of logins for this user 此用户允许登录的最大数目
  48. # - maxsyslogins - max number of logins on the system 系统最大同时在线用户数
  49. # - priority - the priority to run user process with 运行用户进程的优先级
  50. # - locks - max number of file locks the user can hold 用户可以持有的文件锁的最大数量
  51. # - sigpending - max number of pending signals
  52. # - msgqueue - max memory used by POSIX message queues (bytes)
  53. # - nice - max nice priority allowed to raise to values: [-20, 19] max nice优先级允许提升到值
  54. # - rtprio - max realtime pr iority
  55. #
  56. #<domain> <type> <item> <value>
  57. #
  58. #* soft core 0
  59. #* hard rss 10000
  60. #@student hard nproc 20
  61. #@faculty soft nproc 20
  62. #@faculty hard nproc 50
  63. #ftp hard nproc 0
  64. #@st

/etc/security/limits.d/目录

  • /etc/security/limits.d/ 目录

    该目录下默认有 *-nproc.conf 文件,该文件是用于限制用户的线程限制。我们也可以在该目录创建配置文件在 /etc/security/limits.d/ 下,以 .conf 结尾。

    • centos 7

      在CentOS 7版本中为/etc/security/limits.d/20-nproc.conf

      1. # Default limit for number of user's processes to prevent
      2. # accidental fork bombs.
      3. # See rhbz #432903 for reasoning.
      4. * soft nproc 4096 # 所有的用户默认可以打开最大的进程数为 4096
      5. root soft nproc unlimited # root 用户默认可以打开最大的进程数 无限制的。
    • CentOS 6

      在CentOS 6版本中为/etc/security/limits.d/90-nproc.conf

二、 ulimit 如何配置

配置注意事项

注意不能设置 nofile不能设置 unlimitednoproc可以.

当我们设置了 nofile不能设置 unlimited 后,我们进行 ssh 登录,是登录不了的,并且报错下面的内容。

  1. Dec 1 14:57:57 localhost sshd[1543]: pam_limits(sshd:session): Could not set limit for 'nofile': Operation not permitted

当我们设置的 nofile 的值可以设置的最大值为 1048576(2**20),设置的值大于该数,就会进行登录不了。也会显示上面的登录错误。(亲测)

基础配置

我们不将所有的配置配置在/etc/security/limits.conf 而是将配置放在 /etc/security/limits.d/ 下。

比如我们将 nofile的配置放在 /etc/security/limits.d/20-nofile.conf ,nproc 的配置放在 /etc/security/limits.d/20-nproc.conf.

一般我们需要配置的 /etc/security/limits.d/20-nofile.conf 为。

  1. root soft nofile 65535
  2. root hard nofile 65535
  3. * soft nofile 65535
  4. * hard nofile 65535

/etc/security/limits.d/20-nproc.conf 设置为

  1. * - nproc 65535
  2. root soft nproc unlimited
  3. root hard nproc unlimited

注意覆盖点的问题。

示例一:

/etc/security/limits.conf 配置了:

  1. root soft nofile 65538
  2. root hard nofile 65538
  3. * soft nofile 65539
  4. * hard nofile 65539

这个root 用户的 默认取值是 65538 ,* 统配符虽然在 root 配置后面,但是 root 的配置只能被 root 进行覆盖。

我们看下这个配置,当这样配置的时候

  1. root soft nofile 65538
  2. root hard nofile 65538
  3. * soft nofile 65539
  4. * hard nofile 65539
  5. root soft nofile 65539

这个的 root 用户的取值还是 65538 ,因为虽然 root soft nofile 65539 会覆盖我们之前的配置,但是这个配置是不生效的。因为 root soft nofile 65539 配置的值大于root hard nofile 65538 , soft 配置的值不能大于 hard.

示例二:

当我们在 /etc/security/limits.conf 配置了:

  1. root soft nofile 65538
  2. root hard nofile 65538
  3. * soft nofile 65539
  4. * hard nofile 65539

然后我们在 /etc/security/limits.d/20-nofile.conf 配置了:

  1. root soft nofile 65536
  2. root hard nofile 65536
  3. * soft nofile 65540
  4. * hard nofile 65540

最后的取值是会取 /etc/security/limits.d/20-nofile.conf 里面的值。

  1. 配置,只能被特定覆盖。
  2. /etc/security/limits.d/ 下文件的相同配置可以覆盖 /etc/security/limits.conf
  3. softhard需要都进行设置,才能生效。
  4. nofile不能设置 unlimited
  5. nofile可以设置的最大值为 1048576(2**20),设置的值大于该数,就会进行登录不了。
  6. soft 设置的值 一定要小于或等于 hard 的值。

具体详细配置根据应用情况进行配置。

三、ulimit 配置后生效

临时配置

设置可以打开文件的最大数为 65536

  1. ulimit -SHn 65536

重启后失效。

永久配置

配置到配置文件/etc/security/limits.conf或者 /etc/security/limits.d/ 中。

然后退出当前会话,重新登录。 即可生效,重启配置也会保留。

配置不生效的问题

2020年3月份补充

SSH 登陆 limits 配置不生效解决办法

四、ulimit 常用命令

  1. -S use the `soft' resource limit # 设置软限制
  2. -H use the `hard' resource limit # 设置硬限制
  3. -a all current limits are reported# 显示所有的配置。
  4. -b the socket buffer size # 设置socket buffer 的最大值。
  5. -c the maximum size of core files created # 设置core文件的最大值.
  6. -d the maximum size of a process's data segment # 设置线程数据段的最大值
  7. -e the maximum scheduling priority (`nice') # 设置最大调度优先级
  8. -f the maximum size of files written by the shell and its children # 创建文件的最大值。
  9. -i the maximum number of pending signals # 设置最大的等待信号
  10. -l the maximum size a process may lock into memory #设置在内存中锁定进程的最大值
  11. -m the maximum resident set size
  12. -n the maximum number of open file descriptors # 设置最大可以的打开文件描述符。
  13. -p the pipe buffer size
  14. -q the maximum number of bytes in POSIX message queues
  15. -r the maximum real-time scheduling priority
  16. -s the maximum stack size
  17. -t the maximum amount of cpu time in seconds
  18. -u the maximum number of user processes # 设置用户可以创建的最大进程数。
  19. -v the size of virtual memory # 设置虚拟内存的最大值
  20. -x the maximum number of file locks

查看配置

查看所有的配置

  1. ulimit -a

查看配置的最大打开文件数

  1. ulimit -n

更改配置

  1. ulimit -SHn 65536

文章参考:

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

linux ulimit的若干坑 - ulimit真不是乱设的

/etc/security/limits.conf 详解与配置的更多相关文章

  1. /etc/security/limits.conf配置文件详解

    这个文件主要是用来限制用户对系统资源的使用.是/lib64/security/pam_limits.so模块对应的/etc/serurity/pam_limits的配置文件. # /etc/secur ...

  2. 理解RHEL上安装oracle的配置参数 :/etc/security/limits.conf, /etc/profile, /etc/pam.d/login

    无论安装什么版本的Oracle,在安装之前,都需要配置 /etc/pam.d/login   /etc/profile   /etc/security/limits.conf这三个文件 那这三个文件究 ...

  3. Redis:默认配置文件redis.conf详解

    转: Redis:默认配置文件redis.conf详解 # Redis配置文件样例 # Note on units: when memory size is needed, it is possibl ...

  4. Redis配置文件redis.conf详解

    一.Redis配置文件redis.conf详解 # Note on units: when memory size is needed, it is possible to specifiy # it ...

  5. yum的配置文件yum.conf详解

    说明:经过网上抄袭和自己的总结加实验,非常详细,可留作参考. yum的配置一般有两种方式:   一种是直接配置/etc目录下的yum.conf文件, 另外一种是在/etc/yum.repos.d目录下 ...

  6. linux资源使用配置文件 /etc/security/limits.conf和ulimit

    limits.conf文件实际上是linux PAM中pam_limits.so的配置文件,而且只针对于单个会话. limits.conf的格式如下: <domain> <type& ...

  7. CentOS6.x 下 /etc/security/limits.conf 被改错的故障经历

    Intro 我司本小厂,每个员工都是身兼数职,所以开发人员直接登录线上服务器改东西是常态.有些开发人员,自持水平较高(的确水平也是较高,但缺乏对系统的敬畏),所以总是越俎代庖,改一些本身应该是线上运维 ...

  8. too many open file /etc/security/limits.conf

      当出现too mang open file 时更改/etc/profile中的ulimit -n 65536 ,查看   然后ssh进去,或者退出之后重新登录使之生效                ...

  9. /etc/security/limits.conf

    ulimit 命令用来限制系统用户对 shell 资源的访问,但只是临时生效,想要永久生效需要配置 /etc/security/limits.conf 文件,语法及常见配置如下: [root@loca ...

随机推荐

  1. rem辅助式响应布局

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 基于 HTML5 + WebGL 实现 3D 可视化地铁系统

    前言 工业互联网,物联网,可视化等名词在我们现在信息化的大背景下已经是耳熟能详,日常生活的交通,出行,吃穿等可能都可以用信息化的方式来为我们表达,在传统的可视化监控领域,一般都是基于 Web SCAD ...

  3. 完美解决Python与anaconda之间的冲突问题

    anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.因为包含了大量的科学包,Anaconda 的下载文件比较大(约 515 MB),如果 ...

  4. Flutter学习笔记--Dart基础

    前言 Flutter使用Dart语言开发, Dart是面向对象编程语言, 由Google2011年推出, 目前最新版本是2.4.0. 工欲善其事,必先利其器. 为了更好的开发Flutter应用, 我们 ...

  5. netcat的使用

    1,端口扫描 端口扫描经常被系统管理员和黑客用来发现在一些机器上开放的端口,帮助他们识别系统中的漏洞. $nc -z -v -n 172.31.100.7 21-25 可以运行在TCP或者UDP模式, ...

  6. QHDYZ模拟赛20191012

    今天信息处老师(并不是教练,基本等于机房看门大爷) (好吧老师其实很犇,软件什么的厉害的一批,只是不能带oi--) 跟我说:"xxj,过两天月考完了,可以在初赛前再整一次模拟赛,一天,三道题 ...

  7. [考试反思]0822NOIP模拟测试29:延续

    想保持优秀很困难 但是想持续垫底却很简单 但是你不想垫底的话持续垫底也很容易... 分AB卷,A卷共15人. skyh,tdcp,kx155,B哥145... 我:35,倒数第一. 板子专题,爆零快乐 ...

  8. NOIP模拟 14

    垃圾成绩,一点都不稳定. 如果把数组开小的分得到的话..总分还挺不错.. 那又能怪谁,都快NOIP了还犯这种傻逼错误 nc哥是要阿卡的节奏..真是太强了 某kyh也不知道偷了谁的rp,分高的一批 wd ...

  9. 我跟上家老板说过的最后一句话:转.NET Core吧

    最近几天浩子终于刚刚脱离了令人发指工作,一者是年底了,一者是不要向生活低头,就在这时我选择了第二者. 上家是做物联网的,人数不多,七八名开发人员,感觉都还可以,都很年轻没有秃顶,糊里糊涂就选择了入职. ...

  10. python之装饰器的两种写法

    上一篇文章介绍了 装饰器的概念.现在讲一下在程序中怎么来写装饰器.上代码: def X(fun): def Y(b): print(b) fun() return Y def test(): prin ...