linux limits研究

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

一、

soft nproc 与 soft nofile

cat >>/etc/security/limits.conf<<eof
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535

eof

soft nproc: 可打开的文件描述符的最大数(软限制)

hard nproc: 可打开的文件描述符的最大数(硬限制)

soft nofile:单个用户可用的最大进程数量(软限制)

hard nofile:单个用户可用的最大进程数量(硬限制)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

二、

在Linux下面部署应用的时候,其实Linux是有文件句柄限制的,而且默认不是很高,一般都是1024,作为一台生产服务器,其实很容易就达到这个数量,因此我们需 要把这个值改大一些。
这里,有很多ulimit的文章都说的很含糊,究竟这个1024 是系统的限制,还是用户的限制呢。其实,这个是用户限制来的,完整的说法,应该是当前用户准备要运行的程序的限制。
 
1、这个限制是针对单个程序的限制
2、这个限制不会改变之前已经运行了 的程序的限制
3、对这个值的修改,退出了当前的shell就会消失
 
比如说,我先运行了一个程序A,然后 通过ulimit修改了限制为2048,然后运行B,然后退出了shell再登录,然后运行C。那就只有B可以打开2048个句柄。
其中一个方法,是想ulimit修改命令放入/etc/profile 里面,但是这个做法并不好
正确的做法,应该是修改/etc/security/limits.conf
 
那系统总限制呢===========>
其实是在这里,/proc/sys/fs/file-max
可以通过cat查看目前的 值,echo来立刻修改

另外还有一个,/proc/sys/fs/file-nr
只读,可以看到整个系统目前使用的文 件句柄数量
 
查找文件句柄问题的时候,还有一个很 实用的程序lsof
可以很方便看到某个进程开了那些句柄
也可以看到某个文件/目录被什么进程 占用了

临时生效配置命令=============>ulimit -HSn 65535

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

三、

linux limits.conf 配置

limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,而且只针对于单个会话。

  limits.conf的格式如下:

  username|@groupname type resource limit

  username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。

  type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。

  resource:

  core - 限制内核文件的大小

  date - 最大数据大小

  fsize - 最大文件大小

  memlock - 最大锁定内存地址空间

  nofile - 打开文件的最大数目

  rss - 最大持久设置大小

  stack - 最大栈大小

  cpu - 以分钟为单位的最多 CPU 时间

  noproc - 进程的最大数目

  as - 地址空间限制

  maxlogins - 此用户允许登录的最大数目

  要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:

  session required /lib/security/pam_limits.so

例如:修改文件描述符大小(65536)

vi  /etc/security/limits.conf

*                               soft    nofile  65536

*                               hard    nofile  65536

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

时间: 2024-10-06 13:12:21

linux limits研究的相关文章

如何解决编译linux内核(解决声卡问题),遭遇fatal error: linux/limits.h: 没有那个文件或目录

最近帮一位上海的朋友搞一块小板,在ubuntu15.04 vivid上已经加载了对应了.ko驱动包 但关键是系统根本就枚举不到该声卡ALC5640,试了OpenSUSE也是一样的结果,看来是内核漏加载了什么模块. 所以准备重新编译Linux内核3.19.3,结果运行: make?menuconfig 得到错误提示: ? ? ? ? local_lim.h:38:26: fatal error: linux/limits.h ? 应该是在linux目录下找不到limits.h文件.有诸多兄弟碰到过

linux limits.conf配置

limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,而且只针对于单个会话. limits.conf的格式如下: username|@groupname type resource limit username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别.也可以用通配符*来做所有用户的限制. type:有 soft,hard 和 -,soft

linux limits.conf 配置

limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,而且只针对于单个会话.limits.conf的格式如下: username|@groupname type resource limit username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别.也可以用通配符*来做所有用户的限制.type:有 soft,hard 和 -,soft 指

linux网卡研究

1.我在虚拟机网卡新加2个网卡eno33554992和eno50332216他并不会在/etc/sysconfig/network-scripts下生成ifcfg-eno33554992 和ifcfg-eno50332216 ,你想修改譬如eno50332216网卡地址,那么你倒是可以新建一个/etc/sysconfig/network-scripts叫ifcfg-eno50332216的文件,文件名觉得无所谓,主要是里面记得NAME=eno50332216 DEVICE=eno50332216

Linux Kernel中获取当前目录方法(undone)

目录 0. 引言 1. 基于进程内存镜像信息struct mm_struct获取struct path调用d_path()获取当前进程的"绝对路径" 2. 基于文件描述符(fd).task_struct调用d_path()获取当前进程的"当前目录" 3. 基于dentry.vfsmount调用d_path()获取当前进程的"当前目录" 4. 基于get_fs_pwd获取当前目录 0. 引言 本文涉及的是ring0下的获取当前进程工作目录的方法,L

Linux下串口编制【转】

串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统.调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准.串口通讯指的是计算机依次以位(bit)为单位来传送数据,串行通讯使用的范围很广,在嵌入式系统开发过程中串口通讯也经常用到通讯方式之一. Linux对所有设备的访问是通过设备文件来进行的,串口也是这样,为了访问串口,只需打开其设备文件即可操作串口

linux IPC总结——管道

管道 管道是unix ipc的最古老形式,是一种在内存中的特殊文件,只能在具有公共祖先的进程之间使用(即父子进程,兄弟进程). 管道由pipe函数创建 #include <unistd.h> int pipe(int fd[2]) fd[1]写,fd[0]读. 单个进程的管道几乎没有任何用处,通常,调用pipe的进程接着调用fork,这样就创建了父子进程间的管道. #include <unistd.h> #include<stdio.h> #include<sys

Linux下的动态连接库及其实现机制

Linux与Windows的动态连接库概念相似,但是实现机制不同.它引入了GOT表和PLT表的概念,综合使用了多种重定位项,实现了"浮动代码",达到了更好的共享性能.本文对这些技术逐一进行了详细讨论. 本文着重讨论x86体系结构,这是因为 (1)运行Linux的各种体系结构中,以x86最为普及: (2)该体系结构上的Windows操作系统广为人知,由此可以较容易的理解Linux的类似概念: 下表列出了Windows与Linux的近义词,文中将不加以区分: Windows Linux 动

Android和Linux应用综合对比分析

公开发布的序言: 这篇文章是作于2012年7月12日,也就是自己刚从大学校园迈向工作岗位的时候遇到的第一个题目"请你针对我们公司目前的应用行业场景做一下调研:在终端做应用程序开发的平台是选择Linux好还是Android好"而写的. 在踏出校园之前,自己从来没有接触过安卓的开发领域(除了在2010年下半年买了一部分安卓的智能手机外).接到这个题目后,自己也没有退缩,硬着头皮接下来了,然后凭借自己在学校时候学的一点检索信息写学术论文的小功底,三天之内写下了这篇长达1万4千多字的调研报告,