在一个开发环境中,资源的合理限制和分配是保证系统可用性的必要条件,同时也与系统上软件的运行性能密切相关。
Ulimit是linux系统的外键功能,通过它可以使用一组参数设置生成的shell进程及其子进程的资源使用限制。
Ulimit支持的限制类型如下:
创建的内核文件的大小
过程数据块的大小
外壳流程创建文件的大小
内存锁的大小
常驻内存集的大小
要打开的文件描述符数
CPU时间
每个用户的最大线程数
最大虚拟内存等。
用法: ulimit [options] [limit]
一些参数的含义和示例:
-a显示当前的所有limit信息
-H设置硬件资源限制。 这个一旦设定就不能增加
-s线程堆栈大小,以k字节为单位
eg:ulimiths64限制硬资源,线程堆栈大小为64K
-S设置软资源限制。 设置后可以增加,但不能超过硬资源的设置
-n可以打开的文件描述符的最大数目
eg:ulimitsn32软资源限制,32个文件描述符
-设置c核心转储文件的最大大小(以blocks为单位)
eg:ulimitc unlimited不限制核心文件的大小
-m最大内存大小,以kbytes为单位
-u用户可以使用的最大进程数
-指定-tCPU占用时间的最大值
-p管道缓冲区大小,以kbytes为单位
设置-d段的大小
-v设置虚拟内存的最大值
以上参数可根据情况组合使用
使用方法示例:(一次遇到的受字数限制的问题) ) )。
对字数的理解:
句柄是文件、设备、套接字或管道的名称。 这有助于记住正在处理的名称,以及隐藏缓存等的复杂性。 在、
也就是说,句柄是识别符,只要取得对象的句柄,我们就可以对对象进行任意的操作。
在操作系统级别,文件操作也有类似FILE的概念,在Linux上将其称为文件描述符File Descriptor,在Windows上称为句柄Handle。 以下无歧义时统称方向盘。 用户在函数中打开文件以获得句柄,然后用户与文件进行交互就是在该句柄上完成的。
# ulimit无需在n后附加参数即可显示系统中的最大文件数
# lsof-n|awk ‘ {打印$2} ‘使用此命令可以查看进程打开了多少个语句
819 4737
303 5021
303 5020
303 5019
303 5018
303 5017。
返回的第一列的值是打开的语句数,第二列是相应的进程ID
修改字数限制:
linux系统有两种类型的文件句柄限制:系统级和用户级。
系统级别更改:
# echo ‘ 30720 ‘/proc/sys/fs/file-max (30720为自行设置的文字数量) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 65
更改用户级别:
# sudo VI/etc/security/limits.conf
在以下行中添加:
*软件文件2048
* hard nofile 32768星号表示任何用户,而soft/hard表示软限制和硬限制。 数字是要修改的硬件和软件限制的数量。