不是很推荐用rc.local做开机自启动,也很难说是什么问题,至少我自己使用rc.local配置程序开机自启动没有一次是成功过的,据说ubuntu18.04之后默认不支持这个了,目前我用的最多的是systemctl。
首先写一个“服务名称.service”的文件,使用chmod +x 使这个文件添加可执行属性。
[Unit]
Description=写上这个服务的名称
After=network.target #这个的意思是命令在什么时候启动 还有一个选项是basic.service
[Service]
Type=simple
User=nobody #这里写用户名,并不是给root权限就是万能的,比如在要是自启动python程序,但是所有的模块都是用pip下载安装到非root用户下,这时候写root反而会报错显示缺少这个模块
ExecStart=这里写启动命令
[Install]
Alias=服务名称.service
WantedBy=multi-user.target
把这个文件复制到/etc/systemd/system路径下
systemctl daemon-reload
systemctl enable 服务名称 #这样是设置服务开机自动启动 disable表示取消开机自动启动
systemctl start 名称 #这样是启动这个服务
如果配置和运行的进程没有什么问题,运行systemctl start 之后就能启动这个进程了,进程的状态可以使用systemctl status 服务名称来查看。
经过实际测试,运行python3代码、mjpg-streamer、frp是没有任何问题的,开机都能自动启动。