科学做视频网站,全国企业信用信息查询网站,wordpress官网下载,义乌外贸网站建设来啦当文件被打开访问时#xff0c;操作系统临时分配一个名为文件句柄的数字。主内存的一个特殊区域是为文件句柄预留的#xff0c;这个区域的大小决定了一次可以打开多少个文件。Linux上的进程受到许多限制#xff0c;这些限制也阻碍它们正确地执行#xff0c;而且每个进程都有… 当文件被打开访问时操作系统临时分配一个名为文件句柄的数字。主内存的一个特殊区域是为文件句柄预留的这个区域的大小决定了一次可以打开多少个文件。Linux上的进程受到许多限制这些限制也阻碍它们正确地执行而且每个进程都有几个与之相关的限制。shell限制程序可以同时打开的文件句柄的数量。系统环境Centos7为什么要限制打开文件的数量因为操作系统需要内存来管理每个文件所以可以打开的文件数可能会受到限制。由于程序也可以关闭文件处理程序它可以创建任意大小的文件直到所有可用磁盘空间都已满为止。在这种情况下安全性的一个方面是通过施加限制来防止资源耗尽。可以看到Linux系统中打开的文件描述符的最大数量如下所示[rootlocalhost ~]# cat /proc/sys/fs/file-max 180965该值显示用户每次登录会话可以打开的文件数你会注意到结果可能会因系统而异。出于某些原因可能需要增加限制集的值。这就是为什么Linux系统提供了修改这些限制的可能性(增加或减少)方法是更改每个进程和每个系统打开文件数的最大值。方法一使用ulimit命令ulimit命令可用来增加在shell中打开文件的数量。这个命令是系统内置命令因此它只影响bash和从它启动的程序。ulimit语法如下:ulimit [选项] [限制数值]下面选项决定了什么是有限的-a 显示当前所有限制的报告-f (文件限制)限制shell能创建文件的大小-n 限制打开的文件描述符的数量。-H和-S 它们分别被设置为硬限制和软限制。硬限制可能不会随之增加但软限制可能会增加。如果没有提供任何选项ulimit将同时设置硬限制和软限制。查看当前打开文件的软限制可以使用下面命令[rootlocalhost ~]# ulimit -a |grep openopen files (-n) 1024或者[rootlocalhost ~]# ulimit -n1024如果需要查看硬限制适应下面命令[rootlocalhost ~]# ulimit -Hn4096下面修改打开文件的数量[rootlocalhost ~]# ulimit -n 2048然后来查看一下[rootlocalhost ~]# ulimit -Hn2048[rootlocalhost ~]# ulimit -Sn2048发现设置ulimit 值的时候没有指定-H或者-S两个限制都会设定相同的值。现在的问题是如果退出登录或者重新启动计算机该值将被重置。请记住要使生效需要编辑用户的.bashrc或者.bash_profile配置文件通过将ulimit命令行添加到文件的末尾可以使参数生效。[rootlocalhost ~]# echo ulimit -n 2048 ~/.bashrc方法二使用PAM模块最好通过名为pam_limits的PAM模块实现这种限制。需要通过编辑/etc/security/limits.conf文件来配置它。这个文件包含四个基本字段:domain:描述了在哪些实体中应用限制。它可以是user、group(组名前面加表示组)或匹配所有用户,使用(*)通配符。通配符不适应与root用户。type:这里表示限制为硬限制还是软限制硬限制是由系统管理员添加的在任何情况下都不能超过而用户可以临时超过软限制。还可以使用破折号-来表示一个限制是硬的和软的。请注意软限制可以增加到硬限制的值type:它指定被限制条目的类型。可以是core(限制核心文件大小(KB)),data(最大数据大小(KB)),fsize(最大文件大小(KB)),nofile(打开的文件描述符的最大数目),nproc(最大进程数)等类型。更多类型可以使用man limits.conf查看。type: 这里使填写应用限制的数值。下面实例可以对照了解一下。[rootlocalhost ~]# tail -12 /etc/security/limits.conf ###* soft core 0#* hard rss 10000#student hard nproc 20#faculty soft nproc 20#faculty hard nproc 50#ftp hard nproc 0#student - maxlogins 4# End of file要编辑所有用户打开文件的最大数量可以在文件末尾添加以下行[rootlocalhost ~]# vim /etc/security/limits.conf * hard nofile 20000* soft nofile 15000之后需要编辑文件/etc/pam.d/login配置文件在最后添加以下一条内容[rootlocalhost ~]# vim /etc/pam.d/login session required pam_limits.so保存文件。然后退出登录或者重启系统。可以看到软限制和硬限制的值都修改成功了[rootlocalhost ~]# ulimit -Sn15000[rootlocalhost ~]# ulimit -Hn20000方法三查看系统最大打开文件描述符数量[rootlocalhost ~]# cat /proc/sys/fs/file-max 180965临时设置该值[rootlocalhost ~]# echo 1000000 /proc/sys/fs/file-max 永久性设置需要在/etc/sysctl.conf中设置并让它生效[rootlocalhost ~]# echo fs.file-max 1000000 /etc/sysctl.conf [rootlocalhost ~]# sysctl -pfs.file-max 1000000总结所有进程打开的文件描述符数量不能超过/proc/sys/fs/file-max。单个进程打开的文件描述符数不能超过user limit中nofile的soft limit。nofile的soft limit不能超过其hard limit。END官方站点www.linuxprobe.com Linux命令大全www.linuxcool.com刘遄老师QQ5604922Linux技术交流群193666693(新群火热加群中……)想要学习Linux系统的读者可以点击阅读原文按钮来了解书籍《Linux就该这么学》同时也非常适合专业的运维人员阅读成为辅助您工作的高价值工具书点分享点收藏点点赞点在看