14.2.配置文件

FreeBSD 保持基础系统和第三方应用程序之间的明确分离,因此这影响了这些应用程序的配置文件的位置。

FreeBSD 基础系统配置位于/etc 目录,/usr/local/etc 目录包含通过ports 和软件包在系统上安装的所有应用程序的配置文件。

内核状态配置位于/etc/sysctl.conf 文件中。在 sysctl 实用程序部分,将更详细地解释 sysctl(8)的操作。

有关 FreeBSD 文件系统结构的更多信息,请参考 hier(7)。

一般规则是,配置文件没有使用它们必须遵循的标准语法。虽然真实情况是,# 字符通常用于注释一行,并且每行都有一个配置变量。

14.2.1. /etc 目录

/etc 目录包含了所有的 FreeBSD 基础系统配置文件,负责配置 FreeBSD。

14.2.2.sysctl 实用程序

sysctl(8)实用程序用于对运行中的 FreeBSD 系统进行更改。

sysctl(8)实用程序检索内核状态,并能让具有适当特权的进程设置内核状态。要检索或设置的状态使用“管理信息库”(“MIB”)样式名称描述,描述为一组分量的点集。

表 1.管理信息库

在其核心,sysctl(8)具有两个功能:读取和修改系统设置。

要查看所有可读变量:

% sysctl -a

输出应类似于以下内容:

kern.ostype: FreeBSD
...
vm.swap_enabled: 1
vm.overcommit: 0
vm.domain.0.pidctrl.kdd: 8
vm.domain.0.pidctrl.kid: 4
vm.domain.0.pidctrl.kpd: 3
...
vfs.zfs.sync_pass_rewrite: 2
vfs.zfs.sync_pass_dont_compress: 8
vfs.zfs.sync_pass_deferred_free: 2

要读取特定变量,请指定其名称:

% sysctl kern.maxproc

输出应类似如下:

kern.maxproc: 1044

管理信息库(MIB)是分层的,因此,指定前缀会打印下面的所有节点:

% sysctl net

输出应类似如下:

net.local.stream.recvspace: 8192
net.local.stream.sendspace: 8192
net.local.dgram.recvspace: 16384
net.local.dgram.maxdgram: 2048
net.local.seqpacket.recvspace: 8192
net.local.seqpacket.maxseqpacket: 8192
net.local.sockcount: 60
net.local.taskcount: 25
net.local.recycled: 0
net.local.deferred: 0
net.local.inflight: 0
net.inet.ip.portrange.randomtime: 1
net.inet.ip.portrange.randomcps: 9999
[...]

要设置特定变量,请使用变量=值的语法:

# sysctl kern.maxfiles=5000

输出应类似于以下内容:

kern.maxfiles: 2088 -> 5000

14.2.3. /etc/sysctl.conf 文件

sysctl(8) 的配置文件 /etc/sysctl.conf 看起来很像 /etc/rc.conf。

使用 variable=value 语法设置值。

例如,要关闭致命信号退出的日志记录并防止用户看到其他用户启动的进程,可以在 /etc/sysctl.conf 中设置以下可调整项:

# Do not log fatal signal exits (e.g., sig 11)
kern.logsigexit=0

# Prevent users from seeing information about processes that
# are being run under another UID.
security.bsd.see_other_uids=0

要获取关于特定 sysctl 具有什么功能的更多信息,可以执行以下命令:

% sysctl -d kern.dfldsiz

输出应类似于以下内容:

kern.dfldsiz: Initial data size limit

14.2.4. 管理系统特定配置

系统配置信息的主要位置是 /etc/rc.conf.

此文件包含各种配置信息,并在系统启动时读取以配置系统。它为 rc*文件提供配置信息。

/etc/rc.conf 中的条目会覆盖/etc/defaults/rc.conf 中的默认设置。

在聚集应用中,可以采用多种策略将站点范围配置与系统特定配置分离,以减少管理开销。

推荐的方法是将系统特定配置放入 /etc/rc.conf.local 中。

例如,/etc/rc.conf 中的这些条目适用于所有系统:

sshd_enable="YES"
keyrate="fast"
defaultrouter="10.1.1.254"

而这些在 /etc/rc.conf.local 中的条目仅适用于这个系统:

hostname="node1.example.org"
ifconfig_fxp0="inet 10.1.1.1/8"

使用诸如 rsync 或 puppet 之类的应用程序将 /etc/rc.conf 分发到每个系统,而 /etc/rc.conf.local 保持独特。

升级系统不会覆盖 /etc/rc.conf,因此系统配置信息不会丢失。

最后更新于

FreeBSD 中文社区