测试方法:首先应该注意查看Ubuntu系统的版本,因为在实际操作中发现Ubuntu16.04和Ubuntu18.04这两个不同版本设置开机启动项方法不大一致;所以设置之前,首先查看Ubuntu系统版本 =>lsb_release -a 通过该命令查看Ubuntu版本
一、Ubuntu16.04版本可参照以下方法进行添加开机启动项:
应该注意,在Ubuntu 16.10 以后/etc下就没有rc.local了,因为在该Ubuntu版本下把rc.local服务化了,但是我们还是可以手动添加的:
添加方式: 创建rc-local.service文件==>sudo vi /etc/systemd/system/rc-local.service
并添加:
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
// 把你需要启动脚本写入rc.local
// 打开编辑
sudo vi /etc/rc.local
#!/bin/sh -e
# 你的脚本
exit 0
注:所需要开机执行的脚本必须放置在exit 0之前
:wq!保存退出
// 建立软链接
ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/
重启机器检验
二、Ubuntu18.04版本
①、设置开机启动:
touch /etc/init.d/rc.local
②、修改文件权限,添加可执行权限:
chmod +x /etc/init.d/rc.local
③、用 update-rc.d 设置启动级别:
update-rc.d rc.local start 99 2 3 4 5 . stop 99 0 1 6 .
④、为了编辑方便,创建一个链接:
ln -s /etc/init.d/rc.local /etc/rc.local
⑤、编辑要执行的 /etc/rc.local脚本
打开编辑 :vi /etc/rc.local
(这里放置了我们要系统开机去执行的服务,要执行的部分写在exit 0之前),测试示例如下:
#!/bin/sh -e
echo thanks >> /home/test/test.log //测试语句,测试开机之后输出thanks到指定路径下的文件中
exit 0(不可省略)
保存rc.local并退出:
:wq!
⑥、现在我们知道,在rc.local中提到的目录并不存在,现在我们需要做的就是去创建。创建test文件夹,创建test.log文件:
(一)创建test文件夹
cd /home
mkdir test
(二)创建test.log文件
cd test
touch test.log
七、重启机器测试
shutdown -r now
注意:有可能开机启动项rc.local脚本文件不会执行,这是因为脚本得兼容问题。
具体原因:ubunu系统使用的默认bash shell被更换成了dash shell。而/etc/rc.local脚本中用的正是/bin/sh。所以错误。
解决办法:将默认的shell改成bash即可,命令:dpkg-reconfigure dash。选择No即可