如何设置Linux可以打开的文件数限制?


Answers:


7

大多数系统使用PAM,并具有pam_limits基于的模块设置限制/etc/security/limits.conf。每个用户打开文件的限制称为nofile。您可以为每个用户或特定用户或组设置它,还可以设置用户可以覆盖的限制(软限制)和仅root用户可以覆盖的限制(硬限制)。该文件limits.conf手册页有详细信息。例如,要将每个人的限制提高到50000,请输入以下行/etc/limits.conf(该设置在您登录时生效):

* - nofile 50000

limits.confdo * hard nofile 50000和/或内* soft nofile 50000。我不知道硬性和软性之间的技术差异,而且总是兼而有之。
罗恩

例如,在使用tcsh的SLES 11.4中,可以limit descriptors 50000更改给定终端窗口/会话内的值。
罗恩

第二列中的@ron -`设置软限制和硬限制。如果需要不同的值,则仅需要分别设置它们。可以通过运行ulimit命令(limit在csh中调用)随时更改软限制。没有特权的用户永远不能超过硬限制。
吉尔斯(Gilles)'所以别再邪恶了',

如果我只设置了hard,则soft值仍保持默认值吗?如果我仅设置软性而不设置硬性,那么硬性会保持默认值还是本质上等于软性值?我可以设置“软”>“硬”吗?软是有效的真实价值吗?很抱歉的问题。
罗恩

@ron软限制会自动设置为硬限制。如果仅设置硬限制,则这会将软限制设置为max(default_soft_limit,actual_hard_limit)。
吉尔斯(Gilles)'所以

4

您可以添加fs.file-max = <your number>到中/etc/sysctl.conf。然后重新启动。


cat / proc / sys / fs / file-max为169203,但ulimit -n为1024

无需重启。快跑sysctl fs.file-max=123456。(/etc/sysctl.conf在启动时由调用sysctl内容的脚本读取。)
Gilles'SO-别再作恶了

3
ulimit -n

可以修改每个过程的设置

/proc/sys/fs/file-max

或调用的sysctl变量fs.file-max可用于读取和设置系统范围的值


cat / proc / sys / fs / file-max为169203,但ulimit -n为1024


1

对每个程序实例使用ulimit(Bash命令-man bash或为您的shell查找类似的东西)。如果您不知道自己在做什么,请不要使用全局系统限制-可能的DoS。


在SLES 11.4我已nofilelimits.conf设为100000成功。我可以证明设置的值太大会阻止后续使用SSH登录,因此我必须从dvd引导以更正limits.conf中的值才能恢复系统。
罗恩

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.