【Linux】Linux ulimit使用
1. 什么是ulimit?
ulimit是一个可以设置或者汇报当前用户资源限制的命令。使用ulimit命令需要有管理员权限,它只能在允许使用shell进行控制的系统中使用。也就是说它已经被嵌入到shell当中了。
2. 基本使用
➜ ~ ulimit
unlimited
如输出所示,unlimited,当前的用户有无限的资源可以访问。意味着,当前用户可以消耗当前系统支持的所有资源。
➜ ~ ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 7823
-n: file descriptors 1024
-l: locked-in-memory size (kbytes) 64
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 7823
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: unlimited
-a参数可以展示出详细的参数,即我们可以对什么资源做限制。这里的限制有两种类型:soft & hard。hard资源限制意味着是物理限制;soft资源限制是由用户进行管理的,soft的最大值由hard来限制。
系统资源被定义在了*/etc/security/limits.conf*的文件当中,当我们使用ulimit的时候,就是在使用这个文件里定义的值。
#* soft core 0
*
#root hard core 100000
*root soft stack 86400
*root hard stack 86400
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4
3. 查看其他资源限制
ulimit -c # 查看core file文件的最大值
ulimit -d # 查看数据段的最大值
ulimit -e # 查看当前用户的最大调度优先级
ulimit -s # 当前用户的最大栈大小
ulimit -u # 当前用户的最大进程数
ulimit -v # 查看虚拟内存的大小
ulimit -b # 查看socket buffer的大小
ulimit -t # 查看每个进程允许运行的时间
ulimit -n # 查看一个进程可以最多有多少文件描述符
其他命令可通过–help查看
4. 设置资源限制
我们通过上面的内容了解到了怎么去查看当前系统中的一些资源限制的值。现在就来看一下怎么去修改它们。
注意:对于hard限制,我们需要有root权限pip
首先进入limits.conf文件
vim /etc/security/limits.conf
按照如下的格式编辑文件:
<domain> <type> <item> <value>
可以是下面的值:
#Where:
#<domain> can be:
# - a user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
# - NOTE: group and wildcard limits are not applied to root.
# To apply a limit to the root user, <domain> must be
# the literal username root.
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
# - chroot - change root to directory (Debian-specific)
#
#<domain> <type> <item> <value>
其中:
- core:core文件大小(KB)
- data:最大数据大小(KB)
- fsize:最大文件大小(KB)
- memlock:最大locked-in-memory地址空间(KB)
- nofile:最大的open files的数目
- rss:最大的resident set大小(KB)
- stack:最大栈大小(KB)
- cpu:最大cpu时间(分钟)
- nproc:最大进程数
- as:地址空间的限制(KB)
- maxlogins:当前用户的最大登陆数目
- maxsyslogins:当前系统的最大登陆数目
- priority:跑用户进程的优先级
- locks:用户可以持有的file locks的数目
- sigpending:最大的pending signals的数目