您的位置:首页 > 运维架构 > Linux

Linux ulimit解决最大打开文件数限制

2012-09-24 22:12 302 查看
Background: ADF-FR /RR ST/PT 系统参数调整。

limit: 显示(或设置)用户可以使用的资源的限制(limit), 这限制分为软限制(当前限制)和硬限制(上限), 其中硬限制是软限制的上限值, 应用程序在运行过程中使用的系统资源不超过相应的软限制, 任何的超越都导致进程的终止.

1. 各参数含义

usage: ulimit [-SHacdflmnpstuv] [limit]

ulimited 不限制用户可以使用的资源, 但本设置对可打开的最大文件数(max open files)和可同时运行的最大进程数(max user processes)无效.

-H 设置硬件资源限制.

-S 设置软件资源限制.

-a 列出所有当前资源极限

-c 设置core文件的最大值.单位:blocks

-d 设置一个进程的数据段的最大值.单位:kbytes

-f Shell 创建文件的文件大小的最大值, 单位:blocks

-h 指定设置某个给定资源的硬极限. 如果用户拥有 root 用户权限, 可以增大硬极限. 任何用户均可减少硬极限

-l 可以锁住的物理内存的最大值

-m 可以使用的常驻内存的最大值,单位:kbytes

-n 每个进程可以同时打开的最大文件数

-p 设置管道的最大值, 单位为block, 1block=512bytes

-s 指定堆栈的最大值: 单位:kbytes

-S 指定为给定的资源设置软极限. 软极限可增大到硬极限的值. 如果 -H 和 -S 标志均未指定, 极限适用于以上二者

-t 指定每个进程所使用的秒数,单位:seconds

-u 可以运行的最大并发进程数

-v Shell可使用的最大的虚拟内存, 单位:kbytes

-x

2. 范例一

$ ulimit -a

core file size (blocks, -c) 0

data seg size (kbytes, -d) unlimited

file size (blocks, -f) unlimited

pending signals (-i) 1024

max locked memory (kbytes, -l) 32

max memory size (kbytes, -m) unlimited

open files (-n) 65536

pipe size (512 bytes, -p) 8

POSIX message queues (bytes, -q) 819200

stack size (kbytes, -s) 10240

cpu time (seconds, -t) unlimited

max user processes (-u) 16384

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

输出的每一行由资源名字,(单位, ulimit命令的参数),软限制组成. 详细解释:

core file size core文件的最大值为100blocks

data seg size 进程的数据段可以任意大

file size 文件可以任意大

pending signals 最多有1024个待处理的信号

max locked memory 一个任务锁住的物理内存的最大值为32kB

max memory size 一个任务的常驻物理内存的最大值

open files 一个任务最多可以同时打开65536个文件

pipe size 管道的最大空间为4096字节

POSIX message queues POSIX的消息队列的最大值为819200字节

stack size 进程的栈的最大值为10240字节

cpu time 进程使用的CPU时间

max user processes 当前用户同时打开的进程(包括线程)的最大个数为16384

virtual memory 没有限制进程的最大地址空间

file locks 所能锁住的文件的最大个数没有限制

3. 范例二

通过ulimit命令来限制文件的大小, 从而导致拷贝命令的失败.

# ulimit -f 1 --设置创建文件的最大块(一块=512字节)

# cat a.c > temp.txt --会提示文件大小超出限制

文件a.c的大小是5002字节,而我们设定的创建文件的大小是512字节x1块=512字节.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: