【转】 设定linux 系统可用资源
getrlimit和setrlimit函数
每个进程都有一组资源限制,其中某一些可以用getrlimit和setrlimit函数查询和更改。
#include
#include
int getrlimit(int resource,struct rlimit *rlptr);
int setrlimit(int resource,const struct rlimit rlptr);
Both return: 0 if OK,nonzero on error两个函数
返回:若成功为0,出错为非0
对这两个函数的每一次调用都指定一个资源以及一个指向下列结构的指针。
struct rlimit{
rlim rlim ur;/* 软限制:当前限制 */
rlim rlim ax;/* 硬限制:rlimcur的最大值 */
};
这两个函数不属于POSIX.1,但SVR4和4.3+BSD提供它们。SVR4在上面的结构中使用基本系统数据类型rlim。其它系统则将这
两个成员定义为整型或长整型。
进程的资源限制通常是在系统初启时由0#进程建立的,然后由后续进程继承。在SVR4中,系统默认值可以查看文
件/etc/conf/cfd/mtune在4.3+BSD中,系统默认值分散在多个头文件中。
在更改资源限制时,须遵循下列三条规则:
1.任何一个进程都可将一个软限制更改为小于或等于其硬限制。
2.任何一个进程都可降低其硬限制值,但它必须大于或等于其软限制值。这种降低,对普通用户而言是不可逆反的。
3.只有超级用户可以提高硬限制。
一个无限量的限制由常数RLIM NFINITY指定。
这两个函数的resource参数取下列值之一。注意并非所有资源限制都受到SVR4和4.3+BSD的支持。
RLMITCORE(SVR4及4.3+BSD)core文件的最大字节数,若其值为0则阻止创建core文件。
RLIMIT PU(SVR4及4.3+BSD)CPU时间的最大量值(秒),当超过此软限止时,向该进程发送SIGXCPU信号。
RLIMIT ATA(SVR4及4.3+BSD)数据段的最大字节长度。这是图7.3中初始化数据、非初始化数据以及堆的总和。
RLIMIT SIZE(SVR4及4.3+BSD)可以创建的一个文件的最大字节长度。当超过此软限制时,则向该进程发送SIGFSZ信号。
RLIMIT EMLOCK(4.3+BSD)锁定在存储器地址空间(尚末实现)。
RLIMIT OFILE(SVR4)每个进程最多打开的文件数。更改此限制将影响到sysconf函数在参数-sc-OPEN-MAX中返回的值(2.5.4节
)。见程序2.3。
RLIMIT PROC(4.3+BSD)每个实际用户ID所拥有的最大子进程数。更改此限制将影响到sysconf函数在参数 CHILDMAX中返回的
值(2.5.4节)。
RLIMIT FILE(4.3+BSD)与SVR4的RLIMIT OFILE相同。
RLIMIT SS(4.3+BSD)最大驻内存集字节长度(RSS)。如果物理存储器供子应求,则系统核将从进程处取回超过RSS的部分。
RLIMIT TACK(SVR4及4.3+BSD)栈的最大字节长度。见图7.3。
RLIMIT MEM(SVR4)可映照地址空间的最大字节长度。这影响到mmap函数(12.9节)。
资源限制影响到调用进程并由其子进程继承。这就意味着为了影响一个用户的所有后续进程,需将资源限制设置构造在shell
之中。确实,Bourne Shell和Kornshell具有内部ulimit命令,CShell具有内部limit命令。(umask和chdir也必须是shell内部的)
。
较早的BourmeShell,例如由贝克莱提供的一种,不支持ulimit命令。较新的KornShell的ulimit命令具有-H和-s选择项,以
分别检查和修改硬和软的限制,但它们尚末编写入文档。
?
?简单的用例:
#include<sys/time.h>
#include<sys/resource.h>
#include<unistd.h>
int main()
{
struct rlimit limit;
char p = '1';
limit.rlim_cur = RLIM_INFINITY;
limit.rlim_max = RLIM_INFINITY;
if(setrlimit(RLIMIT_CORE, &limit))
{
printf("set limit failed/n");
}
printf("p = %s/n",p);
}
---------------------------------------------------------------------------------------------------------------------------------------------
对每个进程都有一组资源限制,其中一些可以用getrlimit和setrlimit函数查询和更改
getrlimit和setrlimit:资源限制 (getrlimit and setrlimit: Resource Limits)
- 这两个系统函数是和resource limit相关的。你用过ulimit命令吗?(反正我没用过)
- 对于每个资源来说有两个limit:一个是hard limit,一个是soft limit,其中后者永远不能超过前者,并且只有拥有superuser权限的进程可以更改前者。
- getrlimit和setrlimit的参数相同:第一个参数是资源的类型,第二个参数是rlimit结构的指针,这个结构里面就只有两个成员:hard limit和soft limit
- 几个重要的资源类型
- RLIMIT_CPU:程序执行的最大CPU时间,单位是秒。超过之后程序中止,中止的信号是SIGXCPU
- RLIMIT_DATA:程序执行的最大内存
- RLIMIT_NPROC:程序孵出的最大子进程数量
- RLIMIT_NOFILE:程序打开的文件的最大数量
【转】 设定linux 系统可用资源的更多相关文章
- mongodb 对内存的占用监控 ——mongostat,linux系统可用的内存是free + buffers + cached
刚开始使用mongodb的时候,不太注意mongodb的内存使用,但通过查资料发现mongodb对内存的占用是巨大的,在本地测试服务器中,8G的内存居然被占用了45%.汗呀. 本文就来剖析一下mong ...
- Linux系统inodes资源耗尽问题
1 inodes介绍 Linux系统下文件数据储存在"块"中,文件的元信息,例如文件的创建者.文件的创建日期.文件的大小等.这种储存文件元信息的区域就叫做inode,中文译名为&q ...
- Linux系统监视资源与进程管理
Linux 系统中时刻运行着许多的进程,如果能够合理的管理它们,有益于系统性能的优化, 系统进程总共有五种不同的状态: 命令一:ps命令,用于查看系统中进程状态 格式:ps [参数] 查看进程与状态: ...
- Windows系统与Linux系统之间资源samba共享【转】
配置SAMBA服务器来实现在Windows计算机与Linux计算机之间的用户级的资源共享,九河网络TOM[2694339173]教你怎样操作: SAMBA服务器的基本配置 配置SAMBA服务器来实现在 ...
- 如何设定linux系统时间
1.设定日期 #date -s 09/28/2017 2.设定时间 #date -s 11:48:00 设定完了使用date命令查看系统时间,发现已经修改 下图是在Centos6.5 64位版上实际操 ...
- Linux系统inodes资源耗尽时的查找及删除
for i in {1..10}; do echo $i; ls > $i.log; done for i in $(seq 1 10); do echo $i; done 以上为for循环的使 ...
- 【牛客 错题集】Linux系统方面错题合集
前言:牛客Linux322道全部刷完,有些题目较老,甚至考核5系统,现在7都出来了几年了 = = 还有些题目解析的很好部分也摘录了进来.很多涉及嵌入式开发的选择题同样的摘录的作为了解使用 ------ ...
- Linux 系统负载查询及分析说明
Linux 系统出现死机或卡顿时,可以参阅如下步骤进行整体排查: 检查服务器进程与服务否占用了过多内存,或者内存没有正常释放,导致出现内存溢出,系统宕机. 检查 /var/spool/cron 等系统 ...
- linux系统下对网站实施负载均衡+高可用集群需要考虑的几点
随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实 ...
随机推荐
- jqcss选择器
$("p").css("background-color","red"); $(this) 当前 HTML 元素$("p" ...
- 4k 对齐,你准备好了吗?
什么是 4k 对齐? 其实与 “ 4K对齐 ” 相关联的是一个叫做 “ 高级格式化 ” 的分区技术.“ 高级格式化 ” 是国际硬盘设备与材料协会为新型数据结构格式所采用的名称.这是主要鉴于目前的硬盘容 ...
- python中那些双下划线开头得函数和变量--转载
Python中下划线---完全解读 Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __x ...
- server 2003上为单点登录sso配置映射
单点登录不是本人做的,代码需要调用类似 http://***.com/login.sso 的地址.要成功调用,需要在IIS设置.sso为后缀的映射项. Win7系统下一设置完,就能成功调用. 但是服务 ...
- hihocoder 1038 01背包
#1038 : 01背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励 ...
- android结束进程、退出application的方法
1.finish()方法 finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理:调用finish()方 ...
- win7 服务详解-系统优化
Adaptive Brightness监视氛围光传感器,以检测氛围光的变化并调节显示器的亮度.如果此服务停止或被禁用,显示器亮度将不根据照明条件进行调节.该服务的默认运行方式是手动,如果你没有使用触摸 ...
- Android 开机自启动应用
Android启动时,会发出一个系统广播 ACTION_BOOT_COMPLETED,它的字符串常量表示为 “android.intent.action.BOOT_COMPLETED” 开机自启动程序 ...
- 在O(1)时间删除链表结点
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. 链表结点与函数的定义如下: struct ListNode { int m_nValue; ListNode* m_p ...
- (UVALive 7261)Xiongnu's Land 二分
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...