getconf 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于硬件与内核命令族(见硬件与内核模块命令族)。想知道系统某个"硬参数"是多少,它从配置库里查。
getconf 查询系统的配置变量——页大小、字长、最大打开文件数、在线 CPU 数等。这些值是编译/调优/写可移植程序时需要的"系统事实"。
一、基本用法
bash
getconf LONG_BIT # 32 还是 64 位系统:64
getconf PAGE_SIZE # 内存页大小,通常 4096(字节)
getconf _NPROCESSORS_ONLN # 在线 CPU 核数(同 nproc,见 [nproc](/linux/cmd/nproc.md))
getconf -a | head # -a 列出所有变量常用:
LONG_BIT看系统位数、PAGE_SIZE看页大小(内存对齐/大页相关)、_NPROCESSORS_ONLN在线核数。脚本里取这些"系统真相"比自己猜可靠。
二、与 nproc / uname 的重叠
bash
getconf _NPROCESSORS_ONLN # 在线核数
nproc # 等价(见 [nproc](/linux/cmd/nproc.md))
getconf LONG_BIT # 位数
uname -m # 架构(见 [uname](/linux/cmd/uname.md))
getconf像是"系统参数大辞典",很多值别的命令也能给(nproc、uname)。它的独特价值在于覆盖面广——从页大小到各种 POSIX 上限都能查,别的命令只给一两个。
三、实战:可移植编译/调优
bash
PAGE=$(getconf PAGE_SIZE) # 取页大小做内存对齐计算
MAXF=$(getconf OPEN_MAX) # 单进程最大打开文件数
gcc -D PAGE_SIZE=$PAGE app.c # 把系统事实编进程序写 C/系统程序时,
getconf把"这台机器实际参数"喂给编译或运行时逻辑,避免硬编码。调优时查OPEN_MAX、NAME_MAX等上限也用它。
四、常见变量速查
bash
getconf NAME_MAX /tmp # 文件名最大长度
getconf PATH_MAX /tmp # 路径最大长度
getconf _POSIX_THREADS # 是否支持 POSIX 线程这些"上限"在写文件处理、路径拼接、线程池时很关键,超过会报错。
getconf -a可全览,按需取。
一句话总结
getconf = 查系统配置变量:LONG_BIT 看位数、PAGE_SIZE 看页大小、_NPROCESSORS_ONLN 在线核数(同 nproc)、-a 列出全部;是"系统参数大辞典",覆盖页大小/POSIX 上限等,比 nproc/uname 更广。写可移植程序/调优时取系统真相(如 OPEN_MAX)避免硬编码。