在一个开发环境中,资源的合理限制和分配是保证系统可用性的必要条件,同时也与系统上软件的运行性能密切相关。

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表示软限制和硬限制。 数字是要修改的硬件和软件限制的数量。