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
參考閲讀
freebsd官方文檔Starting Services
FreeBSD System Manager's Manual
中科大FreeBSD pkg 源使用幫助