13.2 管理 FreeBSD 中的服务

基础

FreeBSD 使用传统的 BSD init(初始化系统)来管理系统服务。

长期在后台运行的服务通常命名为 xxxd,例如 sshdntpd,其中的 d 表示 FreeBSD 的守护进程标志“daemon”。在 Windows 中,这类程序被称为“服务”,可在任务管理器中查看。

# 启动服务
# service xxx start

# 停止服务
# service xxx stop

# 重启服务
# service xxx restart

# 添加服务并设置开机自启(并非适用于所有服务,仍有局限)
# service xxx enable

# 禁用开机启动
# service xxx disable

# 删除启动项
# service xxx delete

注意

关键字 enabledisabledelete 最早出现在 13.0,参见 Add new rc keywords: enable, disable, delete

系统服务安装后默认未启用,以上命令无法直接执行,需要先启用服务。编辑 /etc/rc.conf 文件:

在文件中添加一行:XXX_enable="YES",其中 XXX 表示服务名称(例如 nginxsamba 等),这是固定格式。

  • 也可以用命令添加:

  • 用命令禁用服务:

提示

上述命令中的 "YES" 的双引号其实可省略,系统会自动添加(FreeBSD 15.0 起如此)。"NO" 亦同理。

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

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

如果 rc.conf 中未启用某项服务,但希望临时启动/结束该服务,可以使用以下命令:

进阶

rc.conf 文件管理所有系统服务,其相关文件和路径如下:

  • 默认配置位于 /etc/defaults/rc.conf此文件仅供参考,通常不直接修改,每项均有详细注释说明用途。 如需修改,请编辑 /etc/rc.conf

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

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

开关机执行启动项

可以在配置文件中写入类似 sddm_enable="YES" 的条目。

  • 开机执行脚本(默认不存在,自行创建)文件:

  • 关机执行脚本(默认不存在,自行创建)文件:

  • 执行测试:

查询默认 rc.conf 配置文件

技巧

bsdconfig 工具可帮助快速查看当前配置。

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

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

例如:

periodic.conf 文件

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

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

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

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

  • 第三方应用的任务脚本位于 /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

最后更新于

这有帮助吗?