博客 / 詳情

返回

Freebsd配置服務開機自啓動

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_boot
  • rcvar=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 源使用幫助

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.