ulimit命令的使用
ulimit用于shell启动进程所占用的资源,属于shell内建命令
语法格式:
ulimit [-acdfHlmnpsStvw] [size]
参数:
-a
显示目前资源限制的设定。
-H
设定资源的硬性限制,也就是管理员所设下的限制。
-S
设定资源的弹性限制。
-c
<core文件上限> 设定core文件的最大值,单位为区块。
-d
<数据节区大小> 程序数据节区的最大值,单位为KB。
-f
<文件大小> shell所能建立的最大文件,单位为区块。
-m
<内存大小> 指定可使用内存的上限,单位为KB。
-n
<文件数目> 指定同一时间最多可开启的文件数。
-p
<缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s
<堆叠大小> 指定堆叠的上限,单位为KB。
-t
<CPU时间> 指定CPU使用时间的上限,单位为秒。
-u
<程序数目> 用户最多可开启的程序数目。
-v
<虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB。
实例
在Linux下写程序的时候,如果程序比较大,经常会遇到“段错误”(segmentationfault)这样的问题,这主要就是由于Linux系统初始的堆栈大小(stack size)太小的缘故,一般为10M。我一般把stack size设置成256M,这样就没有段错误了!命令为:
ulimit -s 262140
如果要系统自动记住这个配置,就编辑/etc/profile文件,在 “ulimit -S -c 0 > /dev/null 2>&1”行下,添加“ulimit -s 262140”,保存重启系统就可以了!
显示系统资源的设置
设置单一用户程序数目上限:4096
设置永久生效
vim /etc/security/limits.conf
* soft nofile 65536 # open files (-n) * hard nofile 65536