分类: LINUX
2015-09-27 22:03:19
ulimit命令 功能说明:控制shell程序的资源。 语法:ulimit [-aHS][-c ][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大小>][-t ][-u <程序数目>][-v <虚拟内存大小>]
补充说明:ulimit为shell内建指令,可用来控制shell执行程序的资源。 参 数: -a 显示目前资源限制的设定。 -c 设定core文件的最大值,单位为区块。 -d <数据节区大小> 程序数据节区的最大值,单位为KB。 -f <文件大小> shell所能建立的最大文件,单位为区块。 -H 设定资源的硬性限制,也就是管理员所设下的限制。 -m <内存大小> 指定可使用内存的上限,单位为KB。 -n <文件数目> 指定同一时间最多可开启的文件数。 -p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。 -s <堆叠大小> 指定堆叠的上限,单位为KB。 -S 设定资源的弹性限制。 -t 指定CPU使用时间的上限,单位为秒。 -u <程序数目> 用户最多可开启的程序数目。 -v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB。
ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。 作为临时限制,ulimit 可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话。而对于长期的固定限制,ulimit 命令语句又可以被添加到由登录 shell 读取的文件中,作用于特定的 shell 用户。
常用用法:
1. 在用户的启动脚本中
如果用户使用的是 bash,就可以在用户的目录下的 .bashrc 文件中,加入如 ulimit – u 64来限制用户最多可以使用 64 个进程。此外,可以在与 .bashrc 功能相当的启动脚本中加入 ulimt
2. 在应用程序的启动脚本中
如果用户要对某个应用程序 myapp 进行限制,可以写一个简单的脚本 startmyapp,以后只要通过脚本 startmyapp 来启动应用程序,就可以限制应用程序 myapp 的线程栈大小为 512K;
ulimit – s 512
myapp
3. 直接在控制台输入,只对此次登录有效,重启后失效;
[root@www ~]# ulimit -p 256
限制管道的缓冲区为 256K
4. 针对某个具体用户的资源加以限制
通过修改系统的 /etc/security/limits 配置文件。该文件不仅能限制指定用户的资源使用,还能限制指定组的资源使用;
该文件的每一行都是对限定的一个描述;
如:mysql soft core 2048000
当然,很多应用需要对整个系统的资源使用做一个总的限制,这时候我们需要修改 /proc 下的配置文件。/proc 目录下包含了很多系统当前状态的参数;
补充:
limits.conf文件
1、 limits.conf 描述limits.conf文件实际是Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,突破系统的默认限制,对系统访问资源有一定保护作用。 limits.conf 和sysctl.conf区别在于limits.conf是针对用户,而sysctl.conf是针对整个系统参数配置2、limits.conf工作原理limits.conf是 pam_limits.so的配置文件,然后/etc/pam.d/下的应用程序调用pam_*.so模块。譬如说,当用户访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目 录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的PAM模块进行处理;3. 文件格式 <domain> <type> <item> <value>domain :设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。Type :值有soft ,hard和-,soft 指的是当前系统生效的设置值,hard 表明系统中所能设定的最大值,soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值Item :则表示需要限定的资源,可以有很多候选值,通过添加对应的一行描述,则可以产生相应的限制:core - 限制内核文件的大小date
- 最大数据大小
fsize - 最大文件大小
memlock - 最大锁定内存地址空间
nofile - 打开文件的最大数目
rss - 最大持久设置大小
stack - 最大栈大小
cpu - 以分钟为单位的最多 CPU 时间
noproc - 进程的最大数目
as - 地址空间限制
maxlogins - 此用户允许登录的最大数目
例如:限制admin用户登录到sshd的服务不能超过2个在/etc/pam.d/sshd中添加:session required pam_limits.so在/etc/security/limits.conf中添加:admin - maxlogins 2注意:查看应用程序能否被PAM支持,用ldd同理limits.conf要使用就必须保证/etc/pam.d/login 中有下面:session required pam_limits.so
4、limits.conf生效1)暂时生效,用于通过 ulimit 命令登录 shell 会话期间;2)永久生效,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件之一(例如 ~/.profile),即特定于 shell 的用户资源文件;或者通过编辑 /etc/security/limits.conf