早先的系统可能使用 rc.locl 或者 init.d 的方式,但这些都已经被逐步淘汰了,ubuntu16以后推荐使用注册systemd的方式
要创建一个自启动服务(脚本),分为以下三步:
- 创建shell脚本
- 向服务目录添加服务信息
- enable服务
例如我要创建一个mytouch服务,它会自动在启动时向桌面创建一个bingo文件
创建shell脚本 /usr/local/bin/mytouch.sh

向服务目录添加服务信息,即向 /etc/systemd/system
添加一个名为 mytouch.service 的文件,内容如下:
[Unit]
After=network.target
[Service]
ExecStart=/usr/local/bin/mytouch.sh
[Install]
WantedBy=default.target
该文件相当于服务的元信息,其内容为 INI 格式,分三个部分:
- Unit:服务的基本信息,例如描述、依赖、启动顺序等,例如After=network,target表示网络就绪后启动脚本
- Service:服务的执行方式,例如服务启动命令、环境变量、工作目录等
- Install:服务的安装方式,也可以用于设置启动级别、启动顺序等,wantedBy就是用于设置启动级别的,常见的有 poweroff.target(关机时)、multi-user.target(多用户模式下)、reboot.target(重启时)等
注:这里有点问题,好像unit和install的功能重复了?
这俩文件创建完后别忘了赋予执行权限,否则,脚本不会执行,并且也没有报错,你会以为哪里写的有问题。
创建该文件就已经将服务注册进systemd了,但还需要enable服务,即执行命令 systemctl enable mytouch.service

此时系统启动就会自动运行该服务脚本了,对于本脚本来说,系统启动后就自动在桌面创建一个bingo文件
当然,既然已经注册成为了服务,就可以使用systemctl进行管理,例如可以随时使用 systemctl start mytouch.service 来执行脚本
若不想使用该服务了,执行 systemctl disable mytouch.service
然后删除上述两个文件即可

注:
- 服务注册好之后,脚本内容可以随时更改
- 脚本会以root用户权限运行
参考:
https://www.yii666.com/blog/662568.html
https://www.tutorialspoint.com/run-a-script-on-startup-in-linux