Linux

修復ulimit:打開文件:無法修改限制:不允許操作

  • October 9, 2018

我在不同的 GNU/Linux 安裝上對此進行了測試:

perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'

系統 A 和 D

我達到的第一個限制是 1024。通過將其放入 /etc/security/limits.conf 可以輕鬆提高:

*                hard    nofile          1048576

然後執行:

ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max

現在測試轉到 1048576。

但是,似乎我無法將其提高到 1048576 以上。如果我將 1048577 放在 limits.conf 中,它就會被忽略。

是什麼原因造成的?

系統 B

在系統 BI 上甚至無法到達 1048576:

echo 99999999 | sudo tee /proc/sys/fs/file-max

/etc/security/limits.conf:

*                hard    nofile          1048576

我在這裡得到:

$ ulimit -n 65537
bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 65536
#OK

這個限制是從哪裡來的?

系統 C

此系統在limits.conf 中也有1048576 的限制,在/proc/sys/fs/file-max 中有99999999 的限制。

但這裡的限制是 4096:

$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 4096
# OK

我如何將其提高到(至少)1048576?

(自我注意:不要這樣做echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max:)

檢查/etc/ssh/sshd_config包含:

UsePAM=yes

其中/etc/pam.d/sshd包含:

session    required   pam_limits.so

仍然沒有答案為什麼 1048576 是最大值。

1048576 似乎是每個程序。因此,通過擁有多個程序,可以克服這個限制。

引用自:https://unix.stackexchange.com/questions/359189