本人使用的嵌入式开发套件是Jetson TX2
!
在部署过程中,先是尝试了创建shell
脚本文件的方法,然后尝试了创建.service
服务的方法。
上述两种方法,本人是在树莓派上都成功实现过的,但在Jetson TX2开发板上都无一而终。
后来想明白,开机启动脚本是在用户登录之前,所以可想而知,不能成功。但我们可以对命令行进行相关的操作,也就是 ~/.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
如此,就可以解决包导入的问题了。
你可以添加一条命令行,每次打开bash时都会自动运行,比如
echo "Hi~"
cd ~/Desktop
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 .'
如果将自己写的脚本放在~/local目录,进到local目录
pwd
复制local的绝对路径
在~/.bashrc里写入
export PATH="local的绝对路径:$PATH"
保存,并执行
source ~/.bashrc
添加环境变量后,直接输入脚本的名字就能执行该脚本了。
PATH 的作用
每次在 Bash 里面输入一个命令时(比如 ls、cp、demo),Bash 都会去 PATH 列表里面寻找对应的文件,如果找到了就执行。
使用 type demo 可以看到寻找过程
使用 which demo 可以看到寻找结果
在~/.bashrc里添加上面这一行,安装 node-sass 的时候就不会因为被墙而报错。
export SASS_BINARY_SITE="https://npm.taobao.org/mirrors/node-sass"