linux ulimit命令


与文件系统及程序的限制关系: ulimit ulimit命令为BASH 的内置命令,为了防止系统资源的过度使用,bash可以限制用户的某些系统资源, 包括可以开启的文件数量, 可以使用的CPU时间,可以使用的内存总量等。
这些都可以通过ulimit命令设置:
[peter@study ~]$ ulimit [-SHacdfltu] [配额]
选项与参数:
-H :hard limit,严格的设定,必定不能超过这个设定的数值;
-S :soft limit,警告的设定,可以超过这个设定值,若超过则有警告讯息。
通常soft会比hard小,例如soft可设定为80而hard设定为100,那么你可以在80~100之间,系统会有警告讯息通知!
-a :后面不接任何选项与参数,可列出所有的限制额度;
-c :当某些程序发生错误时,系统可能会将该程序在内存中的信息写成文件(除错用),这种文件就被称为内核文件(core file)。此为限制每个内核文件的最大容量。
-f :此shell可以建立的最大文件容量(一般可能设定为 2GB)单位为Kbytes
-d :程序可使用的最大段内存(segment)容量;
-l :可用于锁(lock)的内存量
-t :可使用的最大CPU时间(单位为秒)
-u :单一用户可以使用的最大进程(process)数量
列出当前登录用户(假设为一般账号)的所有限制数据数值
              [peter@study ~]$ ulimit -a
core file size          (blocks, -c) 0              #0表示没有限制
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited      #可建立的单一文件大小
pending signals                 (-i) 19550
max locked memory       (kbytes, -l) 16384
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024           #同时可开启的文件数量
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 65535
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
            
filesystem能够支持的单一文件大小与block大小有关。 但是文件系统的限制容量都允许的太大了!
如果想要让使用者建立的文件不要太大时, 可以考虑用ulimit来限制使用者可以建立的文件大小!
利用ulimit -f就可以来设定了,注意单位是Kbytes。限制用户仅能建立10MBytes以下文件:
              [peter@study ~]$ ulimit -f 10240
              [peter@study ~]$ ulimit -a | grep 'file size'
              core file size (blocks, -c) 0
              file size (blocks, -f) 10240     #最大量为10240Kbyes,相当10Mbytes
              [peter@study ~]$ dd if=/dev/zero of=123 bs=1M count=20
              File size limit exceeded (core dumped) #尝试建立20MB的文件,结果失败了!
              [peter@study ~]$ rm 123
            
如果你一直无法建立一个大容量的文件,很有可能是ulimit的设置限制!
需要注意的是,普通用户以ulimit设定了-f的文件大小, 那么以后只能继续减小文件容量,不能增加文件容量!
恢复ulimit设置最简单的方法就是注销再登入,否则就是得要重新以ulimit设定!
如果想要一直生效,需要写入bash配置文件。
若想要管控使用者的ulimit限值, 可以参考pam的介绍。

本文由initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读