1. 开机自启动方法一
1 可执行文件脚本.sh文件来放置运行python文件的命令
- 可以直接在桌面上创建
cd Desktop
touch demo.sh
- 在文件中写入以下内容,path为程序绝对路径
#!/bin/bash
#command content
python3 /path/main.py
exit 0
- 给.sh加权限
chmod a+x demo.sh
2. 在 /etc/profile 这个文件中,添加shell脚本文件路径
- 打开profile文件
sudo vi /etc/profile
- 在文件的最后一行插入demo.sh路径
/path/demo.sh
- 由于我的Python程序需要调用串口发送数据,所以要给串口加权限,name为自己用户名
sudo usermod -a -G dialout name #name为自己用户名
注意:这个方法在Xavier可以直接启动执行Python程序,PC机中是否可以没有尝试
2. 开机自启动方法二
- 编辑rc.local.service并添加[Install]内容:
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
- 如果你之前是在/etc/systemd/system/rc-local.service下,请先rm掉,否则系统运行可能无法自启动程序
sudo rm /etc/systemd/system/rc-local.service
- 启用自启动服务,并查看服务状态,显示activate则启动成功
sudo systemctl enable rc.local.service #启动服务
sudo systemctl status rc-local.service #查看服务状态
如果不想使用自启动了执行以下命令关闭服务即可,显示inactivate 即关闭成功。
sudo systemctl daemon-reload #如果修改了rc-local.service文件,则需要用sudo systemctl daemon-reload重新加载
sudo systemctl stop rc-local.service #关闭服务
sudo systemctl start rc-local.service #开始服务
sudo systemctl status rc-local.service
注意:关闭服务后,要想重新开启服务需要重新删除rc-local.service(根据实际情况,选择是否删除),执行sudo rm /etc/systemd/system/rc-local.service
,再启用服务,每次启用服务都会重新生成rc-local.service
- 在/etc/文件夹创建rc.local文件,并加权限
sudo touch /etc/rc.local
sudo chmod 777 /etc/rc.local
备注: chmod 755加权限(设置记录,可以忽略)
- 一般是三个数字:第一个数字表示文件所有者的权限;第二个数字表示与文件所有者同属一个用户组的其他用户的权限;
第三个数字表示其它用户组的权限。 - 权限分为三种:读(r=4),写(w=2),执行(x=1)。综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)。
- 所以,chmod 755
设置用户的权限为:1.文件所有者可读可写可执行;2.与文件所有者同属一个用户组的其他用户可读可执行;3.其它用户组可读可执行
- 在rc.local文件中,写入要启动的内容
#!/bin/bash -e
# rc.local
#自己添加的启动脚本
bash /home/nvidia/Desktop/demo.sh
exit 0
- 在demo.sh文件写入的内容
#!/bin/bash
python3 /home/nvidia/Desktop/main.py
exit 0
注意:我使用第二个方法时,测试简单的Python程序,可以使用。但是,我自己的项目需要调用串口和网络摄像头,程序运行到这一步报错。第一个方法调用串口和网络摄像头,可以正常执行,但是程序在运行1分钟会闪退。
3. 要给Xavier设置自动登陆
打开设置
点击 User Accounts
将自动登陆开启即可
参考文献
https://blog.csdn.net/weixin_38369492/article/details/110631329