![处于“打开太多文件”的混乱之中](https://linux22.com/image/216238/%E5%A4%84%E4%BA%8E%E2%80%9C%E6%89%93%E5%BC%80%E5%A4%AA%E5%A4%9A%E6%96%87%E4%BB%B6%E2%80%9D%E7%9A%84%E6%B7%B7%E4%B9%B1%E4%B9%8B%E4%B8%AD.png)
我正处于“文件限制”混乱之中,我不知道该怎么办。
我确信重新启动系统会在一段时间内有所帮助。然而,有人可以为我指明正确的方向,找到帮助诊断此问题的工具并在这里找到问题的根源?
在使用我的系统几周而没有重新启动后,有几件事开始困扰我:
- 系统变得明显缓慢,
- 某些程序无明显原因或日志崩溃:例如,如果我正在运行 Wezterm - Google Chrome 无法启动,
- 或者 Google Chrome 正在运行 - 那么 Wezterm 无法启动。
这种情况已经持续了好几个月了,我不明白是什么原因造成的。
这次我决定尝试从另一个终端模拟器运行 Wezterm,看看它是否会在标准输出中溢出任何错误。它做了。显然,我达到了打开文件描述符的限制。
我已经检查并重新检查了当前限制,并尝试根据互联网上的随机建议增加它。没有运气。我不明白为什么文件描述的数量不足以启动Wezterm。
更令人困惑的是,我尝试查看每个进程当前打开的文件数,结果显示:
lsof | awk '{ print $1 " " $2; }' | sort -rn | uniq -c | sort -rn | head -15
[...]
lsof: no pwd entry for UID 65535
lsof: no pwd entry for UID 65535
72450 plasmashe 610475
39294 krunner 623883
27808 telegram- 2383506
22572 chrome 2167881
21600 chrome 2167924
21344 slack 616893
20987 plasma-di 2394216
17050 kwin_x11 610405
12606 zeal 610569
8732 slack 616960
8692 1password 2364911
7766 konsole 2403669
7480 spectacle 1976672
7452 xdg-deskt 610370
4456 kded5 610402
第一列应该是进程的文件描述符的数量。为什么进程需要打开文件?另外:这不可能与 50k 文件描述符的上限一致。现在超级迷茫。
琐事:
系统控制:
sysctl --all | grep file-max sysctl: permission denied on key 'fs.protected_fifos' sysctl: permission denied on key 'fs.protected_hardlinks' sysctl: permission denied on key 'fs.protected_regular' sysctl: permission denied on key 'fs.protected_symlinks' fs.file-max = 9223372036854775807 sysctl: permission denied on key 'kernel.apparmor_display_secid_mode' sysctl: permission denied on key 'kernel.cad_pid' sysctl: permission denied on key 'kernel.unprivileged_userns_apparmor_policy' sysctl: permission denied on key 'kernel.usermodehelper.bset' sysctl: permission denied on key 'kernel.usermodehelper.inheritable' sysctl: permission denied on key 'net.core.bpf_jit_harden' sysctl: permission denied on key 'net.core.bpf_jit_kallsyms' sysctl: permission denied on key 'net.core.bpf_jit_limit' sysctl: permission denied on key 'net.ipv4.tcp_fastopen_key' sysctl: permission denied on key 'net.ipv6.conf.all.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.br-77aecafe7c63.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.br-faf1bfa0fcca.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.default.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.docker0.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.enp2s0f1.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.lo.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.wlp3s0.stable_secret' sysctl: permission denied on key 'vm.mmap_rnd_bits' sysctl: permission denied on key 'vm.mmap_rnd_compat_bits'
sysctl:密钥“vm.stat_refresh”的权限被拒绝
内核版本:
uname -a Linux eugene-pc 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
操作系统版本:
lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.1 LTS Release: 22.04 Codename: jammy