Linux 控制 openfile 命令之 ulimit
理论知识
一、理论知识
文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件。文件描述符与包括相关信息(如文件的打开模式、文件的位置类型、文件的初始类型等)的文件对象相关联,这些信息被称作文件的上下文。文件描述符的有效范围是
0
到OPEN_MAX
对于内核而言,所有打开的文件都是通过文件描述符引用的。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读或写一个文件时,使用
open
或creat
返回的文件描述符标识该文件,并将其作为参数传递给read
或wirte
.
文件描述符定义的内容如下:
$ define STDIN_FILENO 0 /* Standard input. */
$ define STDOUT_FILENO 1 /* Standard poutput. */
$ define STDERR_FILENO 2 /* Standard error output. */
二、命令参数详解
-a #显示目前所有资源设定的限制信息,显示全部信息
-b #socket 目前缓冲的最大值
-c #创建的核心 core 文件的最大大小,单位 blocks
-d #进程数据段的最大值,单位 KB
-e #调度优先级上限,这里的优先级指 NICE 值。只针对普通用户进程有效
-f #当前 Shell 可创建文件总大小的上限,单位 blocks
-H #设定资源的硬限制,只有 root 用户可以操作
-i #被挂起/阻塞的最大信号数量
-l #可以锁住的物理内存的最大值,单位 KB
-m #可以使用的常驻内存的最大值,单位 KB
-n #每个进程可以打开的最大文件数
-p #管道的最大值,单位 block
-q #POSIX 消息队列的最大值
-r #限制程序实时优先级,只针对普通用户进程有效
-s #进程栈最大值,单位 KB
-S #设置资源的软限制
-t #最大 CPU 时间,单位 s
-u #用户最多可启动的进程数目
-v #当前 Shell 可使用的最大虚拟内存,单位 KB
-x #文件锁的最大数量
-T #线程的最大数量
eg:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7183
max locked memory (kbytes, -l) 64
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) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
注意:一旦设置了硬限制,非 root 用户就不能增加它;软限制可能会增加到硬限制的值。如果不指定 -H 和 -S,则软限制和硬限制同时指定 limit 的值可以是一个以资源指定的单位为单位的数字,也可以是一个特殊值 hard、soft 或unlimited,它们分别代表当前的硬限制、软限制和无限制
三、常用实例
1.查看 Linux
服务器可以打开的最大文件数
$ ulimit -n
1024
#默认为1024
2.调整 Linux
文件描述符的大小
(1)
$ vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
#最末尾添加
$ tail -1 /etc/security/limits.conf
* soft nofile 65535
* hard nofile 655355
#nofile 表示单个进程可以打开的最大文件句柄数(默认值,软限制:1024,硬限制:4096)
#nproc表示单个用户创建的进程数(默认值,软限制:threads-max/2,硬限制:threads-max/2),线程的实现其实是一个轻量级的进程,所以线程也算进程
修改后重新登录即可生效
$ ulimit -n
65535
(2)
$ vim /etc/rc.local
ulimit -SHn 65535
ulimit -s 65535
#每次开机配置生效
3.控制进程发生段错误(Segmentation Fault)时生成 coredump 文件。
$ ulimit -c unlimited
#不限制 core 文件大小
$ ulimit -c 1000
#指定修改 core 文件的大小 1000K,默认为 0
4.设置进程的栈大小没有限制。
$ ulimit -s unlimited
Over~
版权协议须知!
本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
1314 0 2019-06-14
博主卡片
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。
现在时间 2024-12-28
今日天气
随机推荐
站点统计
- 文章总数:241篇
- 分类总数:29个
- 评论总数:12条
- 本站总访问量 353176 次
@xiaozi 最后的分享的镜像下载地址打不开 服务器没有开机吗?
@yuanyuan 为什么我的4b安装centos7.9 插上tf卡 显示不兼...
@Wong arrhenius 牛比
@MakerFace 厉害了!
@TongSir 老哥 更新下我的友链链接 https://blog.ton...