我有一个完全更新的 Red Hat Enterprise Linux (RHEL) 8.1 x86_64 系统,作为本地终端中的本地用户(即不是通过 SSH 远程),当我运行ulimit -Sn
它时会说1024
并ulimit -Hn
产生4096
. 我想增加这些数字,因为通常当我编译大型项目时gcc
,该make
步骤会因too many open files
错误而失败。我什至尝试将编译移到podman
容器中,但这并没有帮助,因为容器只是继承了我本地用户的ulimit
s。
这是我在主机上尝试过的:
- 在
/etc/security/limits.conf
我添加了:
* soft nofile 32767
* hard nofile 65535
[username] soft nofile 32767
[username] hard nofile 65535
- 我查了一下
ls -a /etc/security/limits.d/
,那里没有文件。 /etc/sysctl.conf
里面有一行说明fs.file-max = 65535
。我也跑了sysctl -p
。- 我添加
session required pam_limits.so
到文件末尾/etc/pam.d/login
。 ls -a /etc/sysctl.d/
显示了两个文件./ ../ 50-libreswan.conf 99-sysctl.conf@
,它们都不包含与打开文件数量相关的任何内容。cat /proc/sys/fs/file-max
说65535
。/etc/systemd/user.conf
是空的(所有行都被注释掉了),我试图明确地设置DefaultLimitNOFILE=65535
.
尝试上述方法后,当我运行cat /proc/self/limits
or时prlimit
,相关的输出行仍然显示:
NOFILE max number of open files 1024 4096 files
我现在唯一的线索是,当我使用 Gnome 的系统活动应用程序查看我的进程时,当我打开一个终端窗口时,有两个 bash
进程都在我的本地用户下。奇怪的是,当我cat /proc/[process id]/limits
在两个进程上运行时,一个显示大32767
限制,而另一个显示原始1024
限制。我想检查我的~/.bashrc
,~/.bash_profile
但他们没有改变我的ulimit
.
我难住了!
我还可以检查和尝试什么来增加我的ulimit -n
? 或者 SELinux可能systemd
与它有关吗?谢谢您的帮助。
编辑:根据@Gerrit 的建议,我运行systemd-cgls
它说几乎所有在我的本地用户下运行的东西都在:
-.slice
├─user.slice
│ ├─user-1005.slice
│ │ ├─session-2.scope
│ │ │ └─[many entries here]
│ │ └─[email protected]
│ │ └─[many entries here]