13.2 管理 FreeBSD 中的服务
基础
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
系统服务在安装以后默认是未开启状态,以上命令无法执行,需要先开启服务:
# ee /etc/rc.conf添加一行,XXX_enable="YES",XXX 表示服务名称(这里只是举例,实际上可以是 nginx、samba 等),这是固定格式:
XXX_enable="YES"也可以用命令添加:
# sysrc xxx_enable="YES"或
# service xxx enable用命令禁用服务:
# sysrc xxx_enable="NO"或
# service xxx disable提示
# 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 管理着所有系统服务。与之相关的文件和路径如下:
默认的配置位于
/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” 类似项目。
开机执行脚本(默认不存在,自行创建)
/etc/rc.local关机执行脚本(默认不存在,自行创建)
/etc/rc.shutdown.local测试
root@ykla:~ # /etc/rc.d/local start
Starting local daemons:.查询默认 rc.conf 配置文件
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 -> NOperiodic.conf
periodic.confFreeBSD 默认有一些周期性执行的任务,它们是通过 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 每周更新一次。
如果你要立即更新,也可以直接执行这个脚本:
root@ykla:~ # locate locate.database # 试图寻找 locate.database
locate: the locate database '/var/db/locate.database' does not exist.
To create a new database, please run the following command as root:
/etc/periodic/weekly/310.locate
root@ykla:~ # /etc/periodic/weekly/310.locate # 发现没有,提示刷新数据库看看
Rebuilding locate database:
root@ykla:~ # locate locate.database # 再次找找,找到了
/var/db/locate.database其他配置文件
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。
最后更新于
这有帮助吗?