linux的ulimit命令

1、定义

         ulimit命令用来限制系统用户对shell资源的访问。
        ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。
2、ulimit(选项)

-a:显示目前资源限制的设定;
-c <core文件上限>:设定core文件的最大值,单位为区块;
-d <数据节区大小>:程序数据节区的最大值,单位为KB;
-f <文件大小>:shell所能建立的最大文件,单位为区块;
-H:设定资源的硬性限制,也就是管理员所设下的限制;
-m <内存大小>:指定可使用内存的上限,单位为KB;
-n <文件数目>:指定同一时间最多可开启的文件数;
-p <缓冲区大小>:指定管道缓冲区的大小,单位512字节;
-s <堆叠大小>:指定堆叠的上限,单位为KB;
-S:设定资源的弹性限制;
-t <CPU时间>:指定CPU使用时间的上限,单位为秒;
-u <程序数目>:用户最多可开启的程序数目;
-v <虚拟内存大小>:指定可使用的虚拟内存上限,单位为KB。

3、实例
[root@localhost ~]# ulimit -a
core file size          (blocks, -c) 0           #core文件的最大值为100 blocks。
data seg size           (kbytes, -d) unlimited   #进程的数据段可以任意大。
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited   #文件可以任意大。
pending signals                 (-i) 98304       #最多有98304个待处理的信号。
max locked memory       (kbytes, -l) 32          #一个任务锁住的物理内存的最大值为32KB。
max memory size         (kbytes, -m) unlimited   #一个任务的常驻物理内存的最大值。
open files                      (-n) 1024        #一个任务最多可以同时打开1024的文件。
pipe size            (512 bytes, -p) 8           #管道的最大空间为4096字节。
POSIX message queues     (bytes, -q) 819200      #POSIX的消息队列的最大值为819200字节。
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240       #进程的栈的最大值为10240字节。
cpu time               (seconds, -t) unlimited   #进程使用的CPU时间。
max user processes              (-u) 98304       #当前用户同时打开的进程(包括线程)的最大个数为98304。
virtual memory          (kbytes, -v) unlimited   #没有限制进程的最大地址空间。
file locks                      (-x) unlimited   #所能锁住的文件的最大个数没有限制。

4、ulimit 参数说明

选项 [options]                           含义                                例子
-H    设置硬资源限制,一旦设置不能增加。    ulimit – Hs 64;限制硬资源,线程栈大小为 64K。
-S    设置软资源限制,设置后可以增加,但是不能超过硬资源设置。    ulimit – Sn 32;限制软资源,32 个文件描述符。
-a    显示当前所有的 limit 信息。    ulimit – a;显示当前所有的 limit 信息。
-c    最大的 core 文件的大小, 以 blocks 为单位。    ulimit – c unlimited; 对生成的 core 文件的大小不进行限制。
-d    进程最大的数据段的大小,以 Kbytes 为单位。    ulimit -d unlimited;对进程的数据段大小不进行限制。
-f    进程可以创建文件的最大值,以 blocks 为单位。    ulimit – f 2048;限制进程可以创建的最大文件大小为 2048 blocks。
-l    最大可加锁内存大小,以 Kbytes 为单位。    ulimit – l 32;限制最大可加锁内存大小为 32 Kbytes。
-m    最大内存大小,以 Kbytes 为单位。    ulimit – m unlimited;对最大内存不进行限制。
-n    可以打开最大文件描述符的数量。    ulimit – n 128;限制最大可以使用 128 个文件描述符。
-p    管道缓冲区的大小,以 Kbytes 为单位。    ulimit – p 512;限制管道缓冲区的大小为 512 Kbytes。
-s    线程栈大小,以 Kbytes 为单位。    ulimit – s 512;限制线程栈的大小为 512 Kbytes。
-t    最大的 CPU 占用时间,以秒为单位。    ulimit – t unlimited;对最大的 CPU 占用时间不进行限制。
-u    用户最大可用的进程数。    ulimit – u 64;限制用户最多可以使用 64 个进程。
-v    进程最大可用的虚拟内存,以 Kbytes 为单位。    ulimit – v 200000;限制最大可用的虚拟内存为 200000 Kbytes。

5、总结
        综上所述,linux 系统中的 ulimit 指令,对资源限制和系统性能优化提供了一条便捷的途径。从用户的 shell 启动脚本,应用程序启动脚本,以及直接在控制台,都可以通过该指令限制系统资源的使用,包括所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存,等等方面。本文中的示例非常直观的说明了 ulimit 的使用及其产生的效果,显而易见,ulimit 对我们在 Linux 平台的应用和开发工作是非常实用的。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值