NVIDIA Xavier(Ubuntu18.04)配置开机自启动脚本Python程序

1. 开机自启动方法一

1 可执行文件脚本.sh文件来放置运行python文件的命令

  1. 可以直接在桌面上创建
cd Desktop
touch demo.sh
  1. 在文件中写入以下内容,path为程序绝对路径
#!/bin/bash
#command content
python3 /path/main.py
exit 0
  1. 给.sh加权限
chmod a+x demo.sh

2. 在 /etc/profile 这个文件中,添加shell脚本文件路径

  1. 打开profile文件
sudo vi /etc/profile
  1. 在文件的最后一行插入demo.sh路径
/path/demo.sh
  1. 由于我的Python程序需要调用串口发送数据,所以要给串口加权限,name为自己用户名
sudo usermod -a -G dialout name #name为自己用户名

注意:这个方法在Xavier可以直接启动执行Python程序,PC机中是否可以没有尝试

2. 开机自启动方法二

  1. 编辑rc.local.service并添加[Install]内容:
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
  1. 如果你之前是在/etc/systemd/system/rc-local.service下,请先rm掉,否则系统运行可能无法自启动程序
sudo rm /etc/systemd/system/rc-local.service
  1. 启用自启动服务,并查看服务状态,显示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

  1. 在/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.其它用户组可读可执行
  1. 在rc.local文件中,写入要启动的内容
#!/bin/bash -e  

# rc.local

#自己添加的启动脚本
bash /home/nvidia/Desktop/demo.sh

exit 0
  1. 在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

上一篇:linux中init.d文件夹的说明


下一篇:linux开机自启动设置