Jetson系列设置Python脚本开机自启

本人使用的嵌入式开发套件是Jetson TX2!

失败经验

在部署过程中,先是尝试了创建shell脚本文件的方法,然后尝试了创建.service服务的方法。
上述两种方法,本人是在树莓派上都成功实现过的,但在Jetson TX2开发板上都无一而终。

后来想明白,开机启动脚本是在用户登录之前,所以可想而知,不能成功。但我们可以对命令行进行相关的操作,也就是 ~/.bashrc 文件进行相关操作。

编写 ~/.bashrc

首先打开 ~/.bashrc 文件并进行编写

sudo vi ~/.bashrc

在文件的最后一行添加想要执行的终端命令,可以是任何终端,如果不需要root权限,直接添加就可以。

如果需要root权限的话 可使用echo输入密码:

例如:            python  /home/nvidia/my_work/yolov3/detect.py
root 要求的时候: echo “password” | sudo -S chmod 777 ttyUSB0

也可以直接编辑sudoers文件,赋予普通用户执行sudo命令时不再需要输入密码,参考链接使普通用户使用sudo命令不再需要输入密码

这样保存完成时候,发现开机并没有自启,缺少一个启动终端的命令,接下来在终端输入:gnome-session-properties

会打开ubuntu机选项管理,点击Add选项,command中写上:gnome-terminal 其他两个随意写。上面一个是
name,也就是自己可以给它取个名字,最后一行是相关的注释,然后点击 exit 就可以了,这样相当于开机之后开启一个终端,这个终端就可以执行 bashrc 中的程序。

最后只需要将~/.bashrc脚本刷新一下

source ~/.bashrc

就可以尽情的上下电,实现开机自启了。

报错

开机自己执行python文件的时候,会提示没有相关的包,一些自己创建的.py文件,与执行脚本在同一目录下的。
python包的相关方法可以看这篇文章彻底搞懂python如何找包?包安装到哪了?如何更改环境变量?

上面这个文章链接中也提供了解决方法,我使用了其中的一种。
编辑~/.bashrc文件,在运行python脚本之前,cd到脚本所在目录。

sudo vi ~/.bashrc
cd /home/nvidia/my_work/yolov3

如此,就可以解决包导入的问题了。

其他

  1. 自动运行命令行

你可以添加一条命令行,每次打开bash时都会自动运行,比如

echo "Hi~"
cd ~/Desktop
  1. alias

alias的意思是别名、化名,用alias可以给常用的命令行起一个简短的别名,就不用每次都敲很长的命令了。将你要的alias写进.bashrc文件并保存。

alias la='ls -a'
alias ll='ls -l'
alias gst='git status -sb'
alias ga='git add'
alias ga.='git add .'
alias gc='git commit'
alias gc.='git commit .'
  1. 设置path

如果将自己写的脚本放在~/local目录,进到local目录

pwd

复制local的绝对路径
在~/.bashrc里写入

export PATH="local的绝对路径:$PATH"

保存,并执行

source ~/.bashrc

添加环境变量后,直接输入脚本的名字就能执行该脚本了。

PATH 的作用

每次在 Bash 里面输入一个命令时(比如 ls、cp、demo),Bash 都会去 PATH 列表里面寻找对应的文件,如果找到了就执行。
使用 type demo 可以看到寻找过程
使用 which demo 可以看到寻找结果

  1. 环境变量

在~/.bashrc里添加上面这一行,安装 node-sass 的时候就不会因为被墙而报错。

export SASS_BINARY_SITE="https://npm.taobao.org/mirrors/node-sass"

你可能感兴趣的:(Jetson,Linux基础,linux,ubuntu,Jetson,TX2,Nano)