在 Debian(以及大多数 Linux 发行版)里,getconf 这个命令主要用来查询系统配置变量(system configuration limits / constants),这些信息来自 POSIX / C 标准 和 系统实现。
下面是详细解释,按“是什么 → 能干什么 → 常见用法 → 为什么要用它”来说明。
getconf 是什么?getconf 是一个 POSIX 标准工具,用于:
查询系统或编译时的配置参数
这些参数包括:
它本质上是在读取:
sysconf()pathconf()confstr()这几个 C 库函数。
getconf 能干什么?例如:
getconf LONG_BIT
输出:
64
表示系统是 64 位。
getconf OPEN_MAX
返回:
getconf ARG_MAX
返回:
这些数值 不是写死的,而是系统真实支持的值。
getconf NAME_MAX /tmp
输出 /tmp 目录中文件名的最大长度。
getconf PATH_MAX /usr
输出路径最大长度。
getconf GNU_LIBC_VERSION
getconf POSIX_VERSION
用于判断系统符合哪个标准。
getconf?不要写死:
# 不推荐
MAX=1024
而是用:
MAX=$(getconf OPEN_MAX)
这样脚本在不同系统上都能正确运行。
getconf 返回的是 当前系统真实值。
POSIX 脚本中推荐用 getconf 而不是 /proc:
PAGE_SIZE=$(getconf PAGE_SIZE)
比:
PAGE_SIZE=$(getconf PAGESIZE /proc/self)
更通用。
getconf 来自哪里?在 Debian 中:
dpkg -S getconf
通常来自:
libc-bin
因为 getconf 是 glibc 提供的工具。
if [ "$(getconf LONG_BIT)" = "64" ]; then
echo "64-bit system"
else
echo "32-bit system"
fi
getconf PAGE_SIZE
getconf ARG_MAX
getconf?/procsysctl/etc/os-release
getconf用来“问系统”:你支持什么标准、有什么限制、是多少位、最大能开多少文件……
如果你愿意,我可以: