如何修改Linux服务器中的打开文件限制
在Linux系统服务器中,凡是消耗资源的事情,系统都会定义一些限制。例如,对某个命令可以传递多少个参数,同时运行多少个线程等都有限制。
同样,打开文件的数量也有限制。你可能知道,一个打开的文件会被其他一些程序主动使用,因此会消耗内存。
你可以通过 "ulimit "命令查看和修改打开文件的限制。
现在,有两种类型的限制被定义。硬限制和软限制。
打开文件的硬限制是一个静态设置的值,只有Linux服务器系统的 "root "用户才能改变。
软限制是可以由进程动态改变的,即在运行时,如果进程需要的打开文件数量超过了软限制允许的数量,就可以改变软限制。
不用说,软限制是可能导致安全问题的东西。
检查Linux中的打开文件限制
要查看或列出文件的硬限制,请运行。
$ ulimit -Hn
同样,对于查看软限制,运行。
$ ulimit -Sn
这里的'S'和'H'分别代表软限制和硬限制,而'n'表示打开的文件数量。
更改Linux中的打开文件限制
现在让我们尝试修改这些限制,只需在'Sn'或'Hn'之后添加第三个参数,就可以修改限制的新值。
$ ulimit -Sn 5000
$ ulimit -Hn 5000
但是,以这种方式更改的限制在会话(即终端)打开之前会暂时保持修改。按照下面的步骤来永久修改限制。
在Linux中永久设置打开文件的限制
在'vim'或任何你选择的编辑器中打开文件'/etc/security/limits.conf'。注意,这是一个写保护文件,应该用'sudo'或以管理员身份打开。
$ sudo vim /etc/security/limits.conf
注意,限制可以为所有用户设置,也可以为单个用户设置。设置硬限制的语法是。
* hard nofile 5000
'*'是表示该限制是针对所有用户的。第二行的字符串是限制的类型,在这里是'hard'。
第三个字符串是我们要修改的限制。在我们的例子中,它是'nofile',即文件的数量。和这个一样,其他限制也可以在这里设置,例如,'noproc'表示进程的数量。最后,第四个字符串是要设置的新的文件数量限制。
如果你想只为某个用户设置限制,你可以像下面这样做。
abhi soft nofile 5000
这里'abhi'是用户的名字。
现在,我们将把这些行添加到文件中,然后看看限制是否被改变了。

保存并退出文件。
这些限制将要求用户注销并重新登录,因为正在运行的程序仍在考虑旧的限制。再次运行 ulimit 来验证这些限制是否真的被修改了。
$ ulimit
在这篇文章中,我们已经看到了如何改变Linux中打开文件数量的限制。如果你想了解更详细的命令,请运行'ulimit --help'。