rlimit Linux下限制资源的使用(Limiting Resource Usage)
来源:互联网 发布:格式化的数据恢复 编辑:程序博客网 时间:2024/06/05 07:09
在Linux环境编程下,我们可以具体的限制一个进程对资源的使用,当进程尝试超过资源使用的限制,它可能会收到一个信号,或是因资源而失败的系统调用。每个进程最初的获得的限制来自父进程,但是后来可以更改这个限制。
有两个关于资源限制的概念:
current limit:为系统规定的上限,也叫做"soft limit",因为进程通常将被限制在这个范围内。
maxinum limit:为一个进程被允许建立current limit的最大值,也叫做"hard limit",因为一个进程无法避开它,一个进程低于他自己的maxinum limit,且只有超级用户可能提高它的maxinum limit。
struct rlimit {
rlim_t rlim_cur;//The current limit
rlim_t rlim_max;//The maximum limit.
};
使用getrlimit,setrlimit,getrlimit64,setrlimit64(定义在<sys/resource.h>)来对上面两个值进行使用。
— Function: int getrlimit (int resource, struct rlimit *rlp)
读取类型为resource的限制值,并储存在rlp中。
返回值为0时成功,-1时失败。失败时可能将errno设置为EFAULT.
— Function: int setrlimit (int resource, const struct rlimit *rlp)
更新新的current limit 与 maxinum limit限制 ,参数resource为限制的类型(下方有参数表),*rlp带更新的结构体。
同样成功返回0,失败返回-1.将errno设置为EPERM有如下两种情况
1.设置的current limit 超过了maxinum limit的值。
2.在不是超级用户的情况下设置了maxinum limit。
同时这里只提到
struct rlimit64{
rlim64_t rlim_cur;
rlimit.rlim_cur
, but with a different type. rlim64_t rlim_max
rlimit.rlim_max
, but with a different type.}
下面是具体可以限制的种类也就是resource列表
RLIMIT_CPU CPU使用时间限制,如果运行时间长于该值,将会收到信号:SIGXCPU 该值以秒计量
RLIMIT_FSIZE 进程可创建文件大小限制,如果进程尝试写更大的文件将会受到信号:SIGXFSZ
RLIMIT_DATA 最大内存使用限制,如果进程尝试分配内存并超出这个范围,分配函数将会失败
RLIMIT_STACK 进程使用栈的大小限制,如果进程尝试扩展它的栈并超过这个值,那个会收到信号SIGSEGV
RLIMIT_CORE 进程创建core文件大小限制,如果进程结束并且要存储core文件高于该值,那么core文件不会被创建,所以设置这个值为0回保证core文件从不被创建
RLIMIT_RSS 进程所能得到的最大物理内存,这个参数是系统调度程序和内存分配的向导,系统在有盈余时将会给进程更多的内存
RLIMIT_MEMLOCK 在物理内存中最大被锁内存数
RLIMIT_NPROC 同一用户ID创建最大进程数,如果已经到达最大进程数再调用fork会失败
RLIMIT_NOFILE
RLIMIT_OFILE 进程可开最大文件数,如果超出最大数将会失败,该值存在在GNU 和 4.4BSD,部分系统没有。
RLIMIT_AS 进程总共可获得的最大内存数,如果进程尝试分配更多内存,那么分配函数将会失败。
RLIM_NLIMITS 所有参数值的限制,以上任何参数值都不能高于该值
— Constant: rlim_t RLIM_INFINITY
该常量被定义为无穷,在调用setrlimit的时候转载请注明出处谢谢
- rlimit Linux下限制资源的使用(Limiting Resource Usage)
- Linux下的进程资源的限制(struct rlimit)详解
- 在Linux下的进程资源的限制(struct rlimit)详解
- 在Linux下的进程资源的限制(struct rlimit)详解
- 在Linux下的进程资源的限制(struct rlimit)详解
- 在Linux下的进程资源的限制(struct rlimit)详解
- 在Linux下的进程资源的限制(struct rlimit)详解
- 在LINUX下的进程资源的限制(STRUCT RLIMIT)
- 在Linux下的进程资源的限制(struct rlimit)详解
- 在Linux下的进程资源的限制(struct rlimit)详解
- linux下进程资源的限制——struct rlimit详解
- 进程资源限制(rlimit)
- Linux的一些资源使用限制
- linux下限制资源吗?
- TinyOS 下资源分配接口 Resource()的使用。
- Rate Limiting速率限制
- Linux下的进程资源限制ulimit命令
- linux 下应用编程进程内存资源的限制
- JAVA中运用数组的四种排序方法
- 创建类模式
- Android emulator 手机模拟器使用详述
- int const * pci和int * const cpi的区别
- UI Design Basic :0.2 starting and stopping
- rlimit Linux下限制资源的使用(Limiting Resource Usage)
- 【matlab】plot
- 黑马程序员--java_交通系统代码思路分析
- 那时,我们不懂爱
- 硬盘Boot Sector
- css弹出框 提示信息
- DB2停止单个数据库的方法
- android自动化编译
- nbceshi