与文件系统及程序的限制关系: ulimit

    想象一个状况:我的 Linux 主机里面同时登入了十个人,这十个人不知怎么搞的, 同时开启了 100 个档案,每个档案的大小约 10MBytes ,请问一下, 我的 Linux 主机的内存要有多大才够? 10*100*10 = 10000 MBytes = 10GBytes ... 老天爷,这样,系统不挂点才有鬼哩!为了要预防这个情况的发生,所以我们的 bash 是可以『 限制用户的某些系统资源』的,包括可以开启的档案数量, 可以使用的 CPU 时间,可以使用的内存总量等等。如何设定?用 ulimit ! 
[root@www ~]# ulimit [-SHacdfltu] [配额] 
选项与参数:
-H :hard limit ,严格的设定,必定不能超过这个设定的数值; 
-S :soft limit ,警告的设定,可以超过这个设定值,但是若超过则有警告讯息。 在设定上,通常 soft 会比 hard 小,举例来说,soft 可设定为 80 而 hard 设定为 100,那么你可以使用到 90 (因为没有超过 100),但介于 80~100 之间时, 系统会有警告讯息通知你! 
-a :后面不接任何选项与参数,可列出所有的限制额度; 
-c :当某些程序发生错误时,系统可能会将该程序在内存中的信息写成档案(除错用), 这种档案就被称为核心档案(core file)。此为限制每个核心档案的最大容量。 
-f :此 shell 可以建立的最大档案容量(一般可能设定为 2GB)单位为 Kbytes
-d :程序可使用的最大断裂内存(segment)容量;
-l :可用于锁定 (lock) 的内存量 
-t :可使用的最大 CPU 时间 (单位为秒)
-u :单一用户可以使用的最大程序(process)数量。 

范例一:列出你目前身份(假设为root)的所有限制资料数值 
[root@www ~]# ulimit -a

范例二:限制用户仅能建立 10MBytes 以下的容量的档案 
[root@www ~]# ulimit -f 10240
[root@www ~]# ulimit -a 
dd if=/dev/zero of=123 bs=1M count=20 
File size limit exceeded                              <==尝试建立 20MB 的档案,结果失败了!

    其实单一 filesystem 能够支持的单一档案大小与 block 的大小有关。例如 block size 为 1024 byte 时,单一档案可达 16GB 的容量。但是,我们可以用 ulimit 来限制使用者可以建立的档案大小喔! 利用 ulimit -f 就可以来设定了!例如上面的范例二,要注意单位喔!单位是 Kbytes。若改天你一直无法建立一个大容量的档案,记得瞧一瞧 ulimit 的信息喔!


Tips: 想要复原 ulimit 的设定最简单的方法就是注销再登入,否则就是得要重新以 ulimit 设定才行! 不过,要注意的是,一般身份使用者如果以 ulimit 设定了 -f 的档案大小, 那么他『只能继续减小档案容量,不能增加档案容量喔!』另外,若想要管控使用者的 ulimit 限值。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值