关于对 /etc/profile、/etc/security/limits.conf、/etc/sysctl.conf 三个配置文件的理解。

1、/etc/profile

2、/etc/security/limits.conf(用户进程级别的设置)

3、/etc/sysctl.conf (系统级别的设置)

1、/etc/profile

大部分用户环境变量配置都设置在这个配置文件

登入系统读取步骤:

当登入系统时候获得一个shell进程时,其读取环境设定档有三步 :

1.首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如 /etc/profile.d和/etc/inputrc

2.然后根据不同使用者帐号,去其家目录读取~/.bash_profile,如果这读取不了就读取~/.bash_login,这个也读取不了才会读取~/.profile,这三个文档设定基本上是一样的,读取有优先关系

3.然后在根据用户帐号读取~/.bashrc

/etc/*和~/.*区别:

/etc/profile,/etc/bashrc 是系统全局环境变量设定

~/.profile,~/.bashrc是用户家目录下的私有环境变量设定

~/.profile与~/.bashrc的区别:

都具有个性化定制功能

~/.profile可以设定本用户专有的路径,环境变量等,它只在登入的时候执行一次

~/.bashrc也是某用户专有设定文档,可以设定路径,命令别名,每次shell script的执行都会使用它一次

2、/etc/security/limits.conf(用户进程级别的设置)

利用ulimit命令可以对资源的可用性进行控制。

-H选项和-S选项分别表示对给定资源的硬限制(hard limit)和软限制(soft limit)进行设置。

硬限制(hard limit)一旦被设置以后就不能被非root用户修改,软限制(soft limit)可以增长达到硬限制(hard limit)。

如果既没有指定-H选项也没有指定-S选项,那么硬限制(hard limit)和软限制(soft limit)都会被设置。

limit的值可以是一个数值,也可以是一些特定的值,比如:hardsoftunlimited,分别代表当前硬件限制、当前软件限制、不限制。

如果limit参数被省略,除非指定-H选项,否则资源当前的软限制(soft limit)将会被打印出来。

大小可设置为:

[root@mha-slave02 ~]# grep "MemTotal" /proc/meminfo  | awk -F' ' '{print $2}'
4045372
[root@mha-slave02 ~]# expr 4045372 \* 64 / 1024
252835
[root@mha-slave02 ~]# 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) 15719
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 252835
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) 252835
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

open files (-n) 1024 是linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的套接字数量)

这里只是对用户级别的限制,其实还有个是对系统的总限制,查看系统总限制:

# cat /proc/sys/fs/file-max

man proc,可得到file-max的描述:

/proc/sys/fs/file-max
              This  file defines a system-wide limit on the number of open files for all processes.  (See
              also setrlimit(2),  which  can  be  used  by  a  process  to  set  the  per-process  limit,
              RLIMIT_NOFILE,  on  the  number  of  files it may open.)  If you get lots of error messages
              about running out of file handles, try increasing this value:

即file-max是设置系统所有进程一共可以打开的文件数量 。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,是应该增加这个值。

也就是说,这项参数是系统级别的。

2、修改方法

临时生效:

# ulimit -SHn 10000
其实ulimit 命令身是分软限制和硬限制,加-H就是硬限制,加-S就是软限制。默认显示的是软限制,如果运行ulimit 命令修改时没有加上-H或-S,就是两个参数一起改变。

软限制和硬限制的区别?

硬限制就是实际的限制,而软限制是警告限制,它只会给出警告。

永久生效

要想ulimits 的数值永久生效,必须修改配置文件/etc/security/limits.conf
在该配置文件中添加

* soft nofile 252835

* hard nofile 252835

echo "* soft nofile 252835"  >> /etc/security/limits.conf

echo "* hard nofile 252835"  >> /etc/security/limits.conf

* 表示所用的用户

修改系统总限制

其实上的修改都是对一个进程打开的文件句柄数量的限制,我们还需要设置系统的总限制才可以。

假如,我们设置进程打开的文件句柄数是1024 ,但是系统总线制才500,所以所有进程最多能打开文件句柄数量500。从这里我们可以看出只设置进程的打开文件句柄的数量是不行的。所以需要修改系统的总限制才可以。

echo  6553560 > /proc/sys/fs/file-max

上面是临时生效方法,重启机器后会失效;

永久生效方法:

修改 /etc/sysctl.conf, 加入

fs.file-max = 6553560 重启生效

3、/etc/sysctl.conf (系统级别的设置)

# cat /etc/sysctl.conf
kernel.sysrq = 0               ------------------是否启用kernel.sysrq(在大多数服务已无法 响应的情况下,还能通过按键组合来完成一系列 预先定义的系统操作,1启用,0禁用;
kernel.core_uses_pid = 1       ------------------可以控制core文件的文件名中是否添加pid作为扩 展(文件内容为1,表示添加pid作为扩展名,生成 的core文件格式为core.xxxx;为0则表示生成的 core文件同一命名为core);
kernel.msgmnb  = 65536         ------------------限制一个队列的最大长度;
kernel.msgmax  = 65536         ------------------限制一条消息的最大长度;
kernel.shmmax  = 68719476736   ------------------最大共享内存段大小;
kernel.shmall  = 4294967296    ------------------可以使用的共享内存的总量;
kernel.shmmni  = 4096          ------------------整个系统共享内存段的最大数目;
kernel.sem     = 250 32000 100 128 --------------每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操数; 系统范围内最大信号对象集数;
kernel.msgmni  = 256           ------------------决定了系统中同时运行的最大的消息队列的个数;
fs.file-max    = 65536         ------------------系统级打开最大文件句柄的数量;net.ipv4.ip_forward     = 0    ------------------(0代表禁止进行IP转发;1代表可以进行IP转发);
net.ipv4.conf.default.rp_filter = 1  ------------控制系统是否开启对数据包源地址的校验;
net.ipv4.conf.default.accept_source_route = 0  --禁用icmp源路由选项;
net.ipv4.tcp_syncookies = 1    ------------------表示开启SYN Cookies。当出现SYN等待队列溢出 时,启用cookies来处理,可防范少量SYN攻击, 默认为0,表示关闭;
net.ipv4.conf.all.forwarding = 0  ---------------0代表不转发源路由帧,若做NAT建议开启;
net.ipv4.ip_local_port_range = 9000 65000  ------系统中的程序会选择这个范围内的端口来连接到目 的端口(目的端口当然是用户指定的;
net.ipv4.tcp_fin_timeout = 30  ------------------表示如果套接字由本端要求关闭,这个参数决定了 它保持在FIN-WAIT-2状态的时间,默认是60,降 低这个值以提高系统性能;
net.ipv4.tcp_max_syn_backlog = 8192  ------------定义backlog队列容纳的最大半连接数,如果配置 高可以设置的更高;
net.core.rmem_default   =   262144   ------------套接字接收缓冲区大小的缺省值;
net.core.rmem_max       =   4194304  ------------套接字接收缓冲区大小的最大值;
net.core.wmem_default   =   262144   ------------套接字发送缓冲区大小的缺省值;
net.core.wmem_max       =   262144   ------------套接字发送缓冲区大小的最大值;
修改后配置文件使之生效的办法:
sysctl -p

参考:

1、https://www.cnblogs.com/cjsblog/p/9367043.html

2、https://www.cnblogs.com/pangguoping/p/5791432.html

4、https://blog.csdn.net/u011495642/article/details/84109007

Linux打开最大文件数限制相关推荐

  1. Linux下查看某个进程打开的文件数-losf工具常用参数介绍

    Linux下查看某个进程打开的文件数-losf工具常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在linux操作系统中,一切皆文件.通过文件不仅仅可以访问常规数据,还 ...

  2. Linux查看打开的文件数

    Linux查看打开的文件数 lsof -p pid |wc -l (list of open files) ulimit -a 查看系统目前资源限制

  3. linux中查看某个进程打开的文件数

    1.美图 2.背景 需求描述: 今天在处理一个问题的时候,涉及到查看某个进程打开的文件数,在此记录下. 操作过程: 1.查看进程号 [deploy@ningbo-dev-55 mizar-accoun ...

  4. 打开文件数过多 linux,Linux 解决 打开的文件数太多

    服务器异常 最近某个生产应用 调接口 出现了 "打开的文件过多" 的错误提示 . 通过运维查看 服务器的 进程最大文件数默认就是 1024 ,因此需要增加最大的文件数 增加大了 文 ...

  5. 系统可打开最大文件数过小,导致CHECK_NRPE: Error - Could not complete SSL handshake

    1.nagio服务器发出报警日志,客户端ssl handshake失败: ***** Nagios ***** Notification Type: PROBLEM Service: Check Zo ...

  6. linux 目录最大文件数,Linux目录数和文件数限制(目录上最大文件数)

    Linux目录数和文件数限制(目录下最大文件数) Linux目录数和文件数限制(目录下最大文件数) 一.目录数限制: 在同一个路径下,一级子目录的个数限制为 31998 .如果你的应用生成的目录可能会 ...

  7. linux 超大文件编辑,Linux 修改打开最大文件数

    默认打开最大文件是1024 [root@kaka-gamess-nginx-6 ~]# ulimit -a core file size (blocks, -c) 0 data seg size (k ...

  8. Linux打开rtf文档,在linux下设置开机自动启动程序的方法_精品.rtf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsplinux/Unix相关 在linux下设置开机自动启动程序的方 ...

  9. wps linux打开odt文档乱码,jodconvert转换中文文档时中文乱码的小坑

    原创者:文思 继上一篇代码编写和部署后,这次测试发现转换后的pdf的中文都是乱码,作为程序员的我第一时间就去想到了gbk与utf-8之间的字符集编码转换问题.首先在本地windows环境测试,生成的p ...

最新文章

  1. java基于udp实现键盘录入聊天
  2. OpenCV图像处理使用笔记(七)——卷积运算原理
  3. 1-7docke的网络模式
  4. 解聘!“双一流”教授被通报批评
  5. 工作流activiti5 使用流程变量
  6. 反射机制在JDBC连接中的使用
  7. 第3章 系统设计和架构设计【扩胸运动,有容乃大】
  8. 非零段划分(CSP202109-2)
  9. localhost可以访问 ip不能访问_如何解决域名可以访问80端口但访问不了其他端口的问题...
  10. join为什么每个字符都分割了 js_2019JS必看面试题
  11. Centos7 Springboot 启动脚本
  12. 仅三行代码的按键扫描程序,绝对够经典(秒杀郭天祥讲解的按键扫描)
  13. 计算机英语六级时间,计算机一级考试_6月英语六级报名时间
  14. 基于lingo的线性回归和非线性回归
  15. 微信公众平台开发的相关问题
  16. 抖抖口红机java版本_抖音全民口红机
  17. 5.1 OpenStack
  18. 面试题HTML +CSS
  19. WebRTC帧率调整策略
  20. Mac/Windows/Linus操作系统简析

热门文章

  1. 适合游戏办公的计算机组装,2800元i3-7100配GTX1050办公游戏两不误电脑配置推荐
  2. win10xbox下载慢解决方法
  3. 色素疤痕应该如何修复?(色素沉着疤痕怎么修复)
  4. 说说看板在项目中的应用
  5. 医院智慧病房管理系统源码 智慧医院源码 HIS源码
  6. Niagara—— 概述
  7. linux中搜索文件内容关键字--转载哈
  8. 中国银行人工智能行业现状与发展趋势及前景预测报告
  9. 实现memcpy函数
  10. 新工作开始还是原来工作延续