在 Ubuntu(及其他 Linux 发行版)中,getconf 命令用于查询系统配置变量,包括很多“系统限制(system limits)”。下面按常见用途给你一个实用指南。
getconf -a
这会列出当前系统支持的所有配置项,例如:
_POSIX_VERSIONPAGE_SIZEOPEN_MAXARG_MAX_NPROCESSORS_ONLNgetconf OPEN_MAX # 一个进程最多可打开的文件数
getconf ARG_MAX # exec 时命令行参数最大长度
getconf CHILD_MAX # 一个用户最多进程数
getconf LINK_MAX # 一个文件最多硬链接数
getconf NAME_MAX # 文件名最大长度
getconf PATH_MAX # 路径最大长度
getconf PIPE_BUF # 管道原子写大小
示例输出:
$ getconf OPEN_MAX
1024
getconf _NPROCESSORS_CONF # 配置的逻辑 CPU 数
getconf _NPROCESSORS_ONLN # 当前在线的 CPU 数
getconf PAGE_SIZE # 内存页大小
getconf PHYS_PAGES # 物理内存总页数
getconf _POSIX_VERSION
getconf _POSIX_C_SOURCE
getconf _XOPEN_VERSION
有些限制依赖文件系统,要用:
getconf NAME_MAX /tmp
getconf PATH_MAX /home
⚠️ 不同挂载点可能限制不同(例如 ext4 vs tmpfs)
| 工具 | 作用范围 | 示例 |
|---|---|---|
getconf |
系统 / POSIX 标准限制 | OPEN_MAX |
ulimit |
当前 shell / 用户限制 | ulimit -n |
例如:
ulimit -n # 当前 shell 的文件描述符软限制
getconf OPEN_MAX # 系统理论最大值
getconf OPEN_MAX
ulimit -n
cat /proc/sys/fs/file-max
getconf ARG_MAX
getconf _NPROCESSORS_ONLN
nproc
如果你有具体报错(比如 open files、arg list too long、fork 失败),可以贴出来,我可以直接告诉你该看哪个 getconf 项。