关于Ubuntu 18.04图形界面下的max file open 值

正常在Linux下,对打开的文件描述符的数量限制设置有两个地方:

  • sudo sysctl -a | grep file-max 是全局最多可打开文件描述符设置
  • sudo ulimit -n 是单进程最多可打开的文件描述符设置

全局的最大打开数量修改比较容易,只需要在/etc/sysctl.conf中添加fs.file-max并指定值即可,如fs.file-max = 6553500.

单进程的最大打开数量设置就比较坑了,我当前用的是Ubuntu 18.04,若仅是Server版本Ubuntu或是用SSH登陆的情况下,只需在/etc/security/limits.conf添加如下:

*       soft    nofile  1024000
*       hard    nofile  1024000
# 16.04下用 * 会无效,需要指定用户如:
root       soft    nofile  1024000
root       hard    nofile  1024000

不过种方式在图形界面下,这并不起效, 除非是 SSH 登录来的.

根据systemd-system.conf的manpage说明,你只需在/etc/systemd/system.conf/etc/systemd/user.conf中设置DefaultLimitNOFILE=的值,或在/etc/systemd/system.conf.d/etc/systemd/user.conf.d/目录下新建一个 conf 文件,并在其中指定DefaultLimitNOFILE=的值即可。

实际这里有个坑。

如果仅在/etc/systemd/user.conf文件或者/etc/systemd/user.conf.d目录下指定的DefaultLimitNOFILE=值,那么它最大依旧只能是4096.

真正要改的是/etc/systemd/system.conf文件或/etc/systemd/system.conf.d/目录下的 conf 文件,设定DefaultLimitNOFILE=的值即可。

DefaultLimitNOFILE=1024000,然后执行systemctl daemon-reexec注销再重新登陆即生效,或者直接重启也行.