再试一次 - ulimit
type: channel
link: https://www.firetry.com/tag/ulimit/
items: ulimit 是什么

ulimit 是什么
type: item
date: 2011-01-28T14:06:38+00:00
description: 简单的说就是限制线程或者是资源数。看ibm上的解释吧，很详细。http://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/ 概述 系统性能一直是一个受关注的话题，如何通过最简单的设置来实现最有效的性能调优，如何在有限资源的条件下保证程序的运作，ulimit 是我们在处理这些问题时，经常使用的一种简单手段。ulimit 是一种 linux 系统的内键功能，它具有一套参数集，用于为由它生成的 shell 进程及其子进程的资源使用设置限制。本文将在后面的章节中详细说明 ulimit 的功能，使用以及它的影响，并以具体的例子来详细地阐述它在限制资源使用方面的影响。 回页首 ulimit 的功能和用法 ulimit 功能简述 假设有这样一种情况，当一台 Linux 主机上同时登陆了10个人，在系统资源无限制的情况下，这10个用户同时打开了500个文档，而假设每个文档的大小有 10M，这时系统的内存资源就会受到巨大的挑战。 而实际应用的环境要比这种假设复杂的多，例如在一个嵌入式开发环境中，各方面的资源都是非常紧缺的，对于开启文件描述符的数量，分配堆栈的大小，CPU 时间，虚拟内存大小，等等，都有非常严格的要求。资源的合理限制和分配，不仅仅是保证系统可用性的必要条件，也与系统上软件运行的性能有着密不可分的联系。这时，ulimit 可以起到很大的作用，它是一种简单并且有效的实现资源限制的方式。 ulimit 用于限制 shell 启动进程所占用的资源，支持以下各种类型的限制：所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时，它支持硬资源和软资源的限制。 作为临时限制，ulimit 可以作用于通过使用其命令登录的 shell 会话，在会话终止时便结束限制，并不影响于其他 shell 会话。而对于长期的固定限制，ulimit 命令语句又可以被添加到由登录 shell 读取的文件中，作用于特定的 shell 用户。 图1. ulimit 的使用 在下面的章节中，将详细介绍如何使用 ulimit 做相应的资源限制。 如何使用 ulimit ulimit 通过一些参数选项来管理不同种类的系统资源。在本节，我们将讲解这些参数的使用。 ulimit 命令的格式为：ulimit [options] [limit] 具体的 options 含义以及简单示例可以参考以下表格。 表1. ulimit 参数说明 选项 [options] 含义 例子 -H 设置硬资源限制，一旦设置不能增加。 ulimit – Hs64；限制硬资源，线程栈大小为 64K。 -S 设置软资源限制，设置后可以增加，但是不能超过硬资源设置。 ulimit – Sn32；限制软资源，32个文件描述符。 -a 显示当前所有的 limit 信息。 ulimit – a；显示当前所有的 limit 信息。 -c 最大的 core 文件的大小， 以 blocks 为单位。 ulimit – c unlimited； 对生成的 core 文件的大小不进行限制。 -d 进程最大的数据段的大小，以 Kbytes 为单位。 ulimit -d unlimited；对进程的数据段大小不进行限制。 -f 进程可以创建文件的最大值，以 blocks 为单位。 ulimit – f2048；限制进程可以创建的最大文件大小为2048blocks。 -l 最大可加锁内存大小，以 Kbytes 为单位。 ulimit – l32；限制最大可加锁内存大小为32Kbytes。 -m 最大内存大小，以 Kbytes 为单位。 ulimit – m unlimited；对最大内存不进行限制。 -n 可以打开最大文件描述符的数量。 ulimit – n128；限制最大可以使用128个文件描述符。 -p 管道缓冲区的大小，以 Kbytes 为单位。 ulimit – p512；限制管道缓冲区的大小为512Kbytes。 -s 线程栈大小，以 Kbytes 为单位。 ulimit – s512；限制线程栈的大小为512Kbytes。 -t 最大的 CPU 占用时间，以秒为单位。 ulimit – t unlimited；对最大的 CPU 占用时间不进行限制。 -u 用户最大可用的进程数。 ulimit – u64；限制用户最多可以使用64个进程。 -v 进程最大可用的虚拟内存，以 Kbytes 为单位。 ulimit – v200000；限制最大可用的虚拟内存为200000Kbytes。 我们可以通过以下几种…