Debian 最大文件描述符

Pav*_*gin 5 debian

Debian 莱尼。对于每个用户,包括 root:

# cat /proc/sys/fs/file-max
262144

# sysctl fs.file-max
fs.file-max = 262144

# ulimit -Hn
1024

# ulimit -Sn
1024
Run Code Online (Sandbox Code Playgroud)

文件/etc/security/limits.conf没有未注释的行。

它从哪里得到那个 1024?

use*_*686 6

fs.file-maxsysctl的显示有多少个文件句柄可以分配系统范围内的,而ulimit资源限制是每个进程(或每个UID)。前者描述于Documentation/sysctl/fs.txt:90

文件最大和文件编号:

file-max 中的值表示文件的最大数量-
Linux 内核将分配的句柄。当你得到很多
关于耗尽文件句柄的错误消息,您可能
想增加这个限制。

1024 个文件 rlimit 没有在任何地方明确设置;它被硬编码到内核中作为 pid 1 的默认值,位于include/asm-generic/resource.h:81

/*
 * init 任务的启动时间 rlimit 默认值:
 */
#define INIT_RLIMITS \
{ \
        ...
        [RLIMIT_NOFILE] = { INR_OPEN_CUR, INR_OPEN_MAX }, \
        ...
}

其中引用INR_OPEN_CURINR_OPEN_MAX来自include/linux/fs.h:26

#define INR_OPEN_CUR 1024 /* nfile rlimits 的初始设置 */
#define INR_OPEN_MAX 4096 /* nfile rlimits 的硬限制 */

其他进程只是从init(或任何 pid 1)继承限制。

为什么/proc/1/limits在 Debian 上报告 1024 作为软和nfile 限制?我不知道:sysvinit 源代码和 Debian 内核补丁都没有改变它。可能是 initramfs 脚本。(我运行 Arch,它的默认值为 1024/4096。)


归档时间:

查看次数:

4111 次

最近记录:

11 年 前