在 Debian(以及大多数 Linux 发行版)中,getconf 用来查询系统配置变量,这些变量来自 POSIX / SUS 标准 以及 系统实现定义的值。
它本质上是在读取 系统 ABI、限制(limits)、路径配置 等信息。
下面按类别给你一个常用且实用的参数清单,并说明在 Debian 上怎么用。
getconf VARIABLE
getconf -a # 显示所有可用变量
getconf -a system # 系统级变量
示例:
getconf LONG_BIT
getconf PATH_MAX
getconf _NPROCESSORS_ONLN
| 参数 | 含义 |
|---|---|
LONG_BIT |
程序位数(32 / 64) |
WORD_BIT |
字长(通常 32) |
CHAR_BIT |
一个 char 的位数(通常是 8) |
INT_MAX |
int 最大值 |
INT_MIN |
int 最小值 |
UINT_MAX |
unsigned int 最大值 |
示例:
getconf LONG_BIT
# 64
| 参数 | 含义 |
|---|---|
_NPROCESSORS_CONF |
配置的逻辑 CPU 数 |
_NPROCESSORS_ONLN |
当前在线的 CPU 数 |
_POSIX_THREADS |
是否支持 POSIX 线程 |
_POSIX_SEMAPHORES |
是否支持信号量 |
示例:
getconf _NPROCESSORS_ONLN
| 参数 | 含义 |
|---|---|
PATH_MAX |
路径最大长度 |
NAME_MAX |
文件名最大长度 |
LINK_MAX |
一个文件的最大硬链接数 |
MAX_CANON |
终端 canonical input 最大长度 |
MAX_INPUT |
终端输入最大长度 |
PIPE_BUF |
管道原子写大小 |
示例:
getconf PATH_MAX /
getconf NAME_MAX /home
⚠️ 注意:
很多路径相关参数必须指定目录,否则可能报错。
| 参数 | 含义 |
|---|---|
_POSIX_ARG_MAX |
exec 参数最大长度 |
_POSIX_OPEN_MAX |
可同时打开的最大文件数 |
_POSIX_CHILD_MAX |
最大子进程数 |
_POSIX_JOB_CONTROL |
是否支持作业控制 |
_POSIX_SAVED_IDS |
是否支持 saved set-user-ID |
| 参数 | 含义 |
|---|---|
_POSIX_TIMERS |
是否支持 POSIX 定时器 |
_POSIX_MONOTONIC_CLOCK |
是否支持单调时钟 |
_POSIX_CLOCK_SELECTION |
是否支持时钟选择 |
getconf -a system
常见包括:
| 参数 | 含义 |
|---|---|
LEVEL1_ICACHE_SIZE |
L1 指令缓存 |
LEVEL1_ICACHE_ASSOC |
L1 指令缓存关联度 |
LEVEL1_DCACHE_SIZE |
L1 数据缓存 |
LEVEL2_CACHE_SIZE |
L2 缓存 |
LEVEL3_CACHE_SIZE |
L3 缓存 |
LEVEL1_ICACHE_LINESIZE |
缓存行大小 |
⚠️ 这些变量不是所有架构都支持,在 x86_64 上最常见。
getconf -a
输出示例(节选):
LINK_MAX 65000
NAME_MAX 255
PATH_MAX 4096
_POSIX_TIMERS 200809
_NPROCESSORS_ONLN 8
LONG_BIT 64
getconf LONG_BIT
getconf _NPROCESSORS_ONLN
getconf NAME_MAX /
getconf PATH_MAX /
if [ "$(getconf _POSIX_TIMERS)" -ge 0 ]; then
echo "POSIX timers supported"
fi
getconf 来自 libc-bin/usr/include/bits/如果你愿意,我可以帮你:
getconf vs ulimit vs sysctl只要你告诉我你的 Debian 版本和架构即可。