第 24.1 节 BSD INIT 管理服务

基础

FreeBSD 使用传统的 BSD init 管理系统服务。

  • 启动服务:# service XXX start

  • 停止服务:# service XXX stop

  • 重启服务:# service XXX restart

系统服务在安装以后默认是禁用状态,以上命令无法执行,需要先开启服务:

# ee /etc/rc.conf

添加一行,XXX_enable="YES"XXX 表示服务名称(这里只是举例,实际上可以是 nginx samba 等),这是固定格式:

XXX_enable="YES"

也可以用命令添加:

sysrc XXX_enable="YES"

或者禁用:

sysrc XXX_enable="NO"

提示

sysrc XXX_enable="YES"

上述命令 "YES",中的 ""(两个英文双引号)其实没用,不加也能执行,系统会自动加上(FreeBSD 15.0 如此)。"NO" 亦如此。

服务所对应的脚本路径是:#/usr/local/etc/rc.d/

当然也可以直接调用 /etc/rc.d//usr/local/etc/rc.d/ 下的那些脚本。

  • # /usr/local/etc/rc.d/XXX reload

  • # /usr/local/etc/rc.d/XXX stop

如果 rc.conf 中并没有启用某项服务,但想临时启动它,那么可以这样:

  • # service XXX onestart

  • # service XXX onestop

进阶

rc.conf 管理着所有系统服务。与之相关的文件和路径如下:

  1. 默认的配置位于 /etc/defaults/rc.conf这个是用来看的,不是用来改的,基本每项都有详细注释说明用途。 改请改 /etc/rc.conf

  2. 用户自定义的配置位于 /etc/rc.conf。例如,如果想让系统自动启动 ssh、ipfw、nginx 等服务,就要修改该文件。注意,/etc/rc.conf 的优先级高于 /etc/defaults/rc.conf;即 /etc/rc.conf 会覆盖 /etc/defaults/rc.conf

  3. 基本系统的服务脚本位于 /etc/rc.d/。第三方应用的服务脚本位于 /usr/local/etc/rc.d/

查询默认 rc.conf 配置文件

技巧

bsdconfig 可以帮助你快速浏览当前配置。

要查询相关默认配置,以 fsck(文件系统检查)这个常见命令为例:

root@ykla:~ # grep fsck /etc/defaults/rc.conf
fsck_flags="-p"		# May be changed to -f (or -f -y) to force a full fsck
fsck_y_enable="NO"	# Set to YES to do fsck -y if the initial preen fails.
fsck_y_flags="-T ffs:-R -T ufs:-R"	# Additional flags for fsck -y
background_fsck="YES"	# Attempt to run fsck in the background where possible.
background_fsck_delay="60" # Time to wait (seconds) before starting the fsck.
root@ykla:~ # 

可以看到默认参数及注释说明。需要改的话请改 /etc/rc.conf

比如

root@ykla:~ # sysrc fsck_y_enable="YES" #开机自动 fsck
fsck_y_enable: NO -> YES
root@ykla:~ # sysrc background_fsck=NO #强制在控制台输出 fsck 信息
background_fsck: YES -> NO

periodic.conf

FreeBSD 默认有一些周期性执行的任务,它们是通过 periodic 命令执行的,由 cron 自动调用。与 periodic 有关的配置和路径如下:

  1. 默认的配置位于 /etc/defaults/periodic.conf

  2. 用户自定义的配置位于 /etc/periodic.conf

  3. 基系统的任务脚本位于 /etc/periodic/

  4. 第三方应用的任务脚本位于 /usr/local/etc/periodic/

locate 命令的所依赖的路径数据库 /var/db/locate.database 为例,

该数据库由脚本 /etc/periodic/weekly/310.locate 每周更新一次。

如果你要立即更新,也可以直接执行这个脚本。

其他配置文件

  • crontab: cron 配置,位于 /etc/crontab,请参考 crontab

  • syslog.conf: 系统日志配置,位于 /etc/syslog.conf,请参考 syslog.conf

  • loader.conf: 系统启动配置(写入此处配置启动的比 rc.conf 要早,但是可能会妨碍启动),位于 /boot/loader.conf,请参考 loader.conf

  • sysctl.conf: 内核参数配置,位于 /etc/sysctl.conf,请参考 sysctl.conf

最后更新于

FreeBSD 中文社区 2024