背景:系统采用docker容器形式部署方式,docker的形式存在每次启动服务器时所有服务同时启动,没有先后顺序,本次系统有应到mqtt,mqtt需在其他服务之前启动,否则会存在通信异常情况,所以本次应用了开机自启服务,开机执行顺序脚本,以达到应用到mqtt的服务后启动。
使用 rc-local.service
rc-local.service 是系统自带的一个开机自启服务,但是在 ubuntu 20.04 上,该服务默认没有开启。
1. 修改rc-local.service
在/lib/systemd/system/路径下rc-local.service
在文件的最后面添加 [Install] 段的内容,
2. 创建 /etc/rc.local
Ubuntu 20.04 默认不存在 /etc/rc.local,需要自己创建,
在该文件中添加脚本内容,即开机脚本需要实现的功能,这里我等了60秒后移除该服务,再次运行该服务,在家了个简单地实现了向某一个文件里填充数据功能,作为标记。
3. 修改 /etc/rc.local 权限
脚本要想运行,还需要设置脚本的可执行权限,使用 sudo chmod 777 /etc/rc.local
或 sudo chmod +x /etc/rc.local
修改该文件的权限,根据使用工具不同,直接右击更改权限。
4. 启动 rc-local.service
输入 sudo systemctl enable rc-local.service
或 sudo systemctl enable rc-local
使能 rc-local 服务,实际上就是在 /etc/systemd/system/ 目录下创建了一个软链接。
5. 检查服务状态
使用 sudo systemctl status rc-local.service
查看 rc-local 服务的状态, 显示 loaded 和 enabled
6. 重启验证