我正在尝试通过 sysctl (出于学习目的)设置fs.nr_open
为默认值以外的不同值1048576
这些是系统启动后的 sysctl 设置:
vud@ubuntu:~$ sudo sysctl -a | grep -E '(fs.nr_open|fs.file-max)'
fs.file-max = 9223372036854775807
fs.nr_open = 3048576
这是 pid 1 限制:
vud@ubuntu:~$ cat /proc/1/limits | grep 'open files'
Max open files 1048576 1048576 files
我需要更改这个硬限制,但实际上我认为 sysctl 更改应该可以解决问题。
在我的测试中,我启动一个可执行文件并检查限制是否适用。
linda@ubuntu:/opt$ ./test-limits &
[1] 2371
linda@ubuntu:/opt$ cat /proc/2371/limits | grep 'open files'
Max open files 1024 1048576 files
我假设该值是从 pid 1 继承的
PS:我知道可以通过/etc/security/limits.conf
PAM 用户和/etc/systemd/system.conf
服务设置限制。 limit.conf 是空的,对于 systemd 实际上我能够创建测试服务并将 nofile 设置为 1048576 以外的数字。
vud@ubuntu:~$ systemctl status test-limits
● test-limits.service - Testing service limits
Loaded: loaded (/etc/systemd/system/test-limits.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2021-11-18 05:40:21 PST; 5s ago
Main PID: 2237 (test-limits)
vud@ubuntu:~$ cat /proc/2237/limits | grep 'open files'
Max open files 1024 2048576 files
vud@ubuntu:~$ cat /etc/systemd/system.conf | grep NOFILE
DefaultLimitNOFILE=1024:2048576
但就我而言,我想在实践中进行实验并了解如何通过不同的方式设置限制并暂时停留在 sysctl 上。