Chinaunix首页 | 论坛 | 博客
  • 博客访问: 610966
  • 博文数量: 244
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-27 09:53
个人简介

记录学习,记录成长

文章分类

全部博文(244)

我的朋友

分类: 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



                                   
阅读(1329) | 评论(0) | 转发(0) |
0

上一篇:PAM机制介绍

下一篇:Linux上配置VNC服务

给主人留下些什么吧!~~