Linux 命令之 ulimit
简介
ulimit 是一种 Linux 系统的内建功能,它具有一套参数集,用于为由它生成的 shell 进程及其所创进程的资源使用限制。
ulimit 是临时限制,作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话。
若想实现长期的固定限制,ulimit 命令语句又可以被添加到由登录 shell 读取的配置文件中,作用于特定的 shell 用户。
语法
1 | |
示例
查看系统用户所有限制值
1 | |
软限制和硬限制
ulimit 的限制分为硬限制和软限制,这里并不是硬件的限制和软件的限制的意思,硬限制是可以在任何时候任何进程中设置,但硬限制只能由超级用户,也就是 root 用户进行设置,软限制是内核实际执行的限制,任何进程都可以将软限制设置为任意小于等于对进程限制的硬限制的值,说白了,硬限制是个硬指标,root 用户设置后,其他用户配置的软限制不能超过这个值,硬限制用-H参数,软限制用-S参数,如果不指定参数,会同时把两类限制都改掉,比如 root 用户修改 open files 硬参数
- 软限制起实际限制作用,但不能超过而硬限制(除非有root权限)【所以,ulimit 默认显示的是软限制的值】
- 普通用户可以在硬限制范围内,更改自己的软限制。
- 普通用户都可以缩小硬限制,但不能扩大硬限制。而 root 缩小扩大都可以。
临时修改 ulimit
ulimit [-SHacdefilmnpqrstuvx] [限制]。在命令[限制]处,设置值,即可调整限制值,只对当前shell有效。S表示软限制;H表示硬限制;如果不指明,则表示软硬皆设置。
1 | |
临时设置用户 open files(用户可以打开文件的最大数目)
1 | |
永久生效 ulimit
修改 limits.conf 文件,内容如下
1 | |
*代表针对所有用户nproc代表最大进程数nofile代表单个进程的最大文件打开数。- Linux 下一切资源皆文件,普通文件是文件,磁盘打印机是文件,socket 当然也是文件。在 Linux 下创建一个新的socket 连接,实际上就是创建一个新的文件描述符。
- nginx 如果开启4个进程维持用户链接,那么整个nginx能够同时维持的连接数不会超过4*1024个,也就是说最多只能支持4×1024个用户在线。
hard/soft:soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错
/etc/security/limits.d/*.conf中的配置会覆盖/etc/security/limits.conf中的配置
/etc/security/limits.conf 配置详解
格式:
1 | |
domain是指生效实体- 用户名
- 也可以通过
@group指定用户组 - 使用
*表示默认值
type指限制类型soft软限制hard硬限制
item限制资源core同ulimit -cdata同ulimit -dfsize同ulimit -fmemloc同ulimit -lnofile同ulimit -nstack同ulimit -scpu同ulimit -tnproc同ulimit -umaxlogins指定用户可以同时登陆的数量maxsyslogins系统可以同时登陆的用户数priority用户进程运行的优先级locks用户可以锁定的文件最大值sigpengding同ulimit -imsgqueue同ulimit -q
Linux 命令之 ulimit
https://flepeng.github.io/003-Linux-21-命令-Linux-命令之-ulimit/