FreeBSD 使用传统的 BSD init 管理系统服务。
技巧
这些服务如果是长期在后台运行的:一般叫
xxxd
。比如sshd
、ntpd
,当中的d
,即代表 FreeBSD 的小恶魔标志“daemon”。在 Windows 下他们叫做“服务”(任务管理器中就可以看到)。
启动服务:# service xxx start
停止服务:# service xxx stop
重启服务:# service xxx restart
添加服务并开机自启:service xxx enable
(并非全部,仍有缺陷)
禁用开机启动:# service xxx disable
删除启动项:# service xxx delete
注意
关键字
enable
、disable
、delete
最早出现在 13.0,参见 Add new rc keywords: enable, disable, delete
系统服务在安装以后默认是未开启状态,以上命令无法执行,需要先开启服务:
添加一行,XXX_enable="YES"
,XXX
表示服务名称(这里只是举例,实际上可以是 nginx
、samba
等),这是固定格式:
也可以用命令添加:
或
用命令禁用服务:
或
提示
上述命令
"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
管理着所有系统服务。与之相关的文件和路径如下:
默认的配置位于 /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。