在 Ubuntu(以及其他 Linux 发行版)中,getconf 是一个用于查询系统配置变量的命令行工具,它主要依赖 POSIX / SUS(Single UNIX Specification) 以及 glibc 提供的配置信息。
下面按类别说明 getconf 支持的内容。
getconf VARIABLE
getconf -a
getconf VARIABLE path
示例:
getconf LONG_BIT
getconf PATH_MAX /
getconf -a
getconf 支持的变量类型这些变量描述整个系统的限制和能力。
常见示例:
| 变量 | 含义 |
|---|---|
LONG_BIT |
系统位数(32 / 64) |
WORD_BIT |
字长(位) |
PAGE_SIZE |
内存页大小 |
PHYS_PAGES |
物理内存页数 |
NPROCESSORS_CONF |
配置的 CPU 数 |
NPROCESSORS_ONLN |
在线 CPU 数 |
HOST_NAME_MAX |
主机名最大长度 |
CLK_TCK |
系统时钟频率 |
示例:
getconf PAGE_SIZE
getconf NPROCESSORS_ONLN
语法:
getconf VARIABLE /path
示例:
getconf NAME_MAX /
getconf PATH_MAX /home
常见变量:
| 变量 | 含义 |
|---|---|
NAME_MAX |
文件名最大长度 |
PATH_MAX |
路径最大长度 |
LINK_MAX |
硬链接最大数 |
MAX_CANON |
终端规范输入最大长度 |
PIPE_BUF |
原子写管道大小 |
以 _POSIX_ 开头的变量非常多,用于判断系统是否支持某些 POSIX 功能。
示例:
getconf _POSIX_VERSION
getconf _POSIX_THREADS
常见变量:
| 变量 | 含义 |
|---|---|
_POSIX_VERSION |
POSIX 版本 |
_POSIX_THREADS |
是否支持线程 |
_POSIX_SHELL |
是否有 POSIX shell |
_POSIX_CHOWN_RESTRICTED |
chown 是否受限 |
_POSIX_NO_TRUNC |
文件名过长是否报错 |
Ubuntu 使用 glibc,因此还支持 GNU 扩展变量。
示例:
getconf GNU_LIBC_VERSION
getconf LFS_CFLAGS
常见变量:
| 变量 | 含义 |
|---|---|
GNU_LIBC_VERSION |
glibc 版本 |
LFS_CFLAGS |
大文件支持编译参数 |
LFS_LDFLAGS |
大文件链接参数 |
getconf -a
或(更详细):
getconf -a | less
✅ 判断系统位数
getconf LONG_BIT
✅ 获取 CPU 数量
getconf _NPROCESSORS_ONLN
✅ 编译大文件程序
getconf LFS_CFLAGS
✅ Shell 脚本中做兼容性判断
if [ "$(getconf _POSIX_THREADS)" = "200809" ]; then
echo "支持 POSIX 线程"
fi
getconf 实际调用的是:
sysconf()pathconf()confstr()因此它的输出和 C 程序中调用这些函数是一致的。
如果你愿意,我可以:
getconf -a 的完整输出示例