Ubuntu18 开机自动执行--脚本或命令(基于update-rc.d)

前言

Ubuntu 18 不再使用initd管理系统,而是使用systemd;我们使用 update-rc.d,可以添加和删除服务,并将它们添加到Ubuntu / Debian启动脚本中,实现开启自启动效果。

实现过程:

1)新建个脚本文件 new_service.sh

#!/bin/bash
# command content
exit 0

2)设置权限

sudo chmod +x new_service.sh

3)把脚本放置到启动目录下

sudo mv new_service.sh /etc/init.d/

4、将脚本添加到开机启动脚本

执行如下指令,在这里90表明一个优先级,越高表示执行的越晚 (优先级范围:0~90)

cd /etc/init.d/
sudo update-rc.d new_service.sh defaults 90

然后重启电脑;

5)查看全部服务列表

sudo service --status-all

这时应该能看到新加开机启动脚本(new_service.sh)的名字在列表中;说明开机时会启动这个sh脚本的。
附加:看到列表中,启动前面会可能出现以下三种状态de

  • [+] –具有此标志的服务当前正在运行。
  • [–] –具有此标志的服务当前未运行。
  • [?] –没有  状态开关的服务。

6)服务的启动停止状态

xxx为第5步查询得来的启动服务(脚本)名字

sudo service xxx status
sudo service xxx start
sudo service xxx stop
sudo service xxx restart

其他

移除开机启动脚本

sudo update-rc.d -f new_service.sh remove

update-rc.d的详细参数
使用update-rc.d命令需要指定脚本名称和一些参数,它的格式看起来是这样的(需要在 root 权限下):

update-rc.d [-n] [-f] <basename> remove
update-rc.d [-n] <basename> defaults
update-rc.d [-n] <basename> disable|enable [S|2|3|4|5]
update-rc.d <basename> start|stop <NN> <runlevels>

参数解析:

-n: not really
-f: force
disable|enable:代表脚本还在/etc/init.d中,并设置当前状态是手动启动还是自动启动。
start|stop:代表脚本还在/etc/init.d中,开机,并设置当前状态是开始运行还是停止运行。(启用后可配置开始运行与否)
NN:是一个决定启动顺序的两位数字值。(例如90大于80,因此80对应的脚本先启动或先停止)
runlevels:则指定了运行级别。

希望对你有帮助。
如果有不对的,欢迎指正。

上一篇:如何定义DATATABLE,同时赋值


下一篇:Ubuntu 开机自动执行--脚本或命令(基于rc.local)