ubuntu18 不能像 ubuntu16 一样通过编辑 rc.local 来设置开机启动脚本,需要通过下列简单设置后,以使 rc.local 重新发挥作用。
Ubuntu 16.10开始不再使用initd
管理系统,改用systemd
,包括用systemctl
命令来替换了service
和chkconfig
的功能。比如以前启动mysql
服务用sudo service mysql start
,现在用sudo systemctl start mysqld.service
。systemd
默认读取/etc/systemd/system
下的配置文件,该目录下的文件会链接/lib/systemd/system/
下的文件。
执行命令ls /lib/systemd/system
可以看到很多启动脚本,其中就有我们需要的rc-local.service
,打开脚本内容如下:
![v2-d73597b38156fbcc142fc61d036744b2_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=d39df43f-aa2e-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-d73597b38156fbcc142fc61d036744b2_b.jpg)
一般启动文件需要三个组成部分:
[Unit]段: 启动顺序与依赖关系
[Service] 段: 启动行为,如何启动,启动类型
[Install] 段: 定义如何安装这个配置文件,即怎样做到开机启动
上面少了 [Install]
段,把下面 Install
段添上去,加入到 rc-local.service
的最后:
[Install]
WantedBy=multi-user.target
在这个 rc-local.service
中我们已经声明了我们对应的自启动配置文件为 /etc/rc.local
。然而 ubuntu18 是默认没有这个文件的,所以需要我们手动创建该文件。然后再将你需要的开机自启动脚本写入到这个文件下:
![v2-0f0cdb222347b857e689589c13f43511_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=d39df43f-aa2e-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-0f0cdb222347b857e689589c13f43511_b.jpg)
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo "看到这行字,说明添加自启动脚本成功" > /usr/local/text.log
exit 0
然后给 rc.local
文件赋予可执行权限:
sudo chmod +x /etc/rc.local
启动服务并检查服务状态:
sudo systemctl enable rc-local
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
重启后查看是否有 text.log
生成:
![v2-cbd0d5efbae7685c937ac1cd0396e177_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=d39df43f-aa2e-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-cbd0d5efbae7685c937ac1cd0396e177_b.jpg)
如果看到如上的内容,就说明已经配置成功了,然后你可以进一步修改你的 rc.local
中的自启动脚本改成你所想要的启动脚本。
比如,我这里设置的是开机自动启动拨号连接和开启 frp 远程服务脚本:
python3 /home/g2080/ihdu3.py >/dev/null 2>&1 &
nohup /home/g2080/frp/frpc -c /home/g2080/frp/frpc.ini >/dev/null 2>&1 &
exit 0
Bingo~
另外,如果担心仅仅设置开机自动,不能够很好的应对服务器运行过程中的突发情况,可以进一步设置定时任务脚本:
晒月亮的孩子:Ubuntu18定时任务脚本zhuanlan.zhihu.com参考资料:
- Ubuntu 18.04设置开机自动启动
- ubuntu18.04开机自启动脚本(已测试可以) - xyyhqq - 博客园
- Ubuntu18.04三分钟设置开机启动服务_idiot_qi的博客-CSDN博客