Freebsd配置服务开机自启动

图灵完备者
• 阅读 1439

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 源使用帮助

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Ubuntu18开启redis服务自启动
设置redis服务开机自启动。1.创建配置文件夹sudomkdir/etc/redissudocp/usr/local/redis/redis.conf/etc/redissudocp/etc/redis/redis.conf/etc/redis/6379.conf2.
Stella981 Stella981
3年前
CentOS 7设置开机启动服务,添加自定义系统服务
CentOS7设置开机启动服务建立服务文件保存目录设置开机自启动其他命令1.建立服务文件文件路径vim/usr/lib/systemd/system/nginx.service服务文件内容1.ngin
Stella981 Stella981
3年前
Centos6 使用yum快速搭建LAMP环境
1、安装Apache\root@localhost~\yumyinstallhttpd\开机自启动\root@localhost~\chkconfighttpdon\启动httpd服务\root@localhost~\servicehttpdstart\安装apache
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Linux常用的配置文件
/etc/sysconfig/network         基本网络全局配置如:主机名、网关/etc/sysconfig/networkscripts/ifcfgeth0     网卡配置文件,可配置ip、掩码、网关、静态或动态获取地址、是否随开机自启动/etc/hosts         存
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(