freebsd
由于没使用systemd
,所以会采用配置/etc/rc.d/
文件的方式配置服务启动
服务模拟脚本
开机自启动脚本执行的时候不能阻塞,freebsd
服务启动的时候是串行执行的,一条命令卡住,所有后续服务不能执行
新建脚本/root/test-boot.sh
,注意最后面要加上&
以免阻塞
#!/bin/sh
sh -c "while true;do date >> /root/test-boot.log; sleep 1; done" &
下面执行脚本
$ chmod a+x test-boot.sh
$ ./test-boot.sh
检查效果
$ tail -f /root/test-boot.log
配置开机启动
如下配置是照抄freebsd
官方文档Starting Services
主要的不同是把原文中的配置文件从utility
参数全部替换为test_boot
,即utility
服务替换为test_boot
服务,该服务会在DAEMON
pseudo-service
之后启动
注意不要携带后缀.sh
/etc/rc.d/test_boot
#!/bin/sh
#
# PROVIDE: test_boot
# REQUIRE: DAEMON
# KEYWORD: shutdown
. /etc/rc.subr
name=test_boot
rcvar=test_boot_enable
command="/root/test-boot.sh"
load_rc_config $name
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
# SET THEM IN THE /etc/rc.conf FILE
#
test_boot_enable=${test_boot_enable-"NO"}
pidfile=${test_boot_pidfile-"/var/run/test_boot.pid"}
run_rc_command "$1"
参数与命令解释
. /etc/rc.subr
: 加载rc.subr
定义的参数和函数PROVIDE: test_boot
: 指定此文件所提供的服务的名字,该字段是必须的REQUIRE: DAEMON
: 列出此服务启动之前所需要的其他服务,非必须字段,但是推荐自定义的服务填写为DAEMON
,这样可以保证自定义服务在所有通用守护进程之后运行,以免太早运行产生不必要的依赖错误name=test_boot
: 配置服务名称是test_bootrcvar=test_boot_enable
: 配置服务是否开机自启动参数, 可以使用/etc/rc.d/test_boot rcvar
命令来检查服务是否在/etc/rc.conf
中被启用command="/root/test-boot.sh"
: 配置启动命令位置, 如果该服务是阻塞的,则需要修改command="some-service &"
更多配置项或者使用可以参考/etc/rc.d/sshd
文件
增加执行权限
$ chmod a+x /etc/rc.d/test_boot
编辑/etc/rc.conf
,新增一行数据允许开机自启动
test_boot_enable="YES"
最后重启查看/root/test-boot.log
文件验证
拓展阅读
配置freebsd
软件包源为国内中科大源
创建配置文件/usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD: {
url: "pkg+http://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/quarterly",
}
更新索引
$ pkg update -f
安装vim
$ pkg install vim
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。