Jetson xavier NX等Jetson系列开发板设置Python脚本的开机自启动(需要激活conda环境下)

Jetson xavier NX开机自启动python程序

失败案例:

本人使用shell脚本进行开机自启动失败:当时严格按照Jetson nano开机自启动python程序的相关操作进行设置。
新建start.sh文件后,编辑内容:

#!/bin/bash
echo '1122' | sudo chmod 777 /dev/ttyTCU0
conda activate yolov5
cd yolov5_v6.0_1/
python3 detect_and_strereo_video.py --source 0

进行上述链接的相关操作后,重新开机(sudo reboot)后,进入了terminal界面,但是需要重新输入用户密码,同时conda activate yolov5语句报错,无法进入conda环境。
错误如图所示:
Jetson xavier NX等Jetson系列开发板设置Python脚本的开机自启动(需要激活conda环境下)_第1张图片
方案无效原因:
开机启动脚本是在用户登录之前,所以不能成功。但我们可以对命令行进行相关的操作,即对~/.bashrc 文件进行相关操作。

解决方案:

参考博客:Jetson系列设置Python脚本开机自启
(一)sudo命令时需要输入密码解决方案
参考博客:Linux 中使普通用户使用Sudo不需要输入密码
运行自动脚本,您可能需要配置 sudoers 文件并允许某些用户运行 sudo 命令而不要求输入密码。

我们要将用户添加到 sudoers文件,sudoers 文件包含确定用户和组的 sudo 权限的信息。

向下滚动到文件的末尾并添加以下行,该行允许用户 “liuyang” 使用 sudo 运行任何命令而无需开始询问密码:

sudo vi /etc/sudoers	
liuyang ALL=(ALL) NOPASSWD:ALL

如果要允许用户仅运行特定命令而不输入密码,请在 NOPASSWD 关键字后指定命令。

例如,要仅允许使用 mkdir 和 mv 命令:

在/etc/sudoers文件

nvidia ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/mv

(二)编写 ~/.bashrc
首先打开 ~/.bashrc 文件并进行编写:

sudo vi ~/.bashrc

在文件的最后一行添加想要执行的终端命令,可以是任何终端,如果不需要root权限,直接添加就可以。如果需要root权限的话 可使用echo输入密码:

echo “password” | sudo -S chmod 777 ttyUSB0

也可以直接编辑sudoers文件(如步骤1所示),赋予普通用户执行sudo命令时不再需要输入密码。
例如博主本人需要(1)给NX版的串口赋值使能权限,(2)激活某conda环境,(3)同时进入某文件夹,(4)并启动脚本。可在~/.bashrc文件的最后加入:

echo '1122' | sudo chmod 777 /dev/ttyTCU0
conda activate yolov5
cd yolov5_v6.0_1/
python3 detect_and_strereo_video.py --source 0

(三)配置开机自启相关设置
~/.bashrc保存完成时候,发现开机并没有自启,缺少一个启动终端的命令,接下来在终端输入:

gnome-session-properties

会打开ubuntu机选项管理,点击Add选项,command中写上:gnome-terminal 其他两个随意写。这样相当于开机之后开启一个终端,这个终端就可以执行 bashrc 中的程序。
(四)最后需要将~/.bashrc脚本刷新一下:

source ~/.bashrc

注意:设置全部完成后,即可实现python脚本开机自启动。中止程序ctrl+c后,默认进入~/.bashrc设置的路径和conda环境中。再次开启ternimal时,依然自启动python程序。想取消python脚本的开机自启动,进入:.bashrc中注释掉相关命令即可。

感谢:
Jetson nano开机自启动python程序
Jetson系列设置Python脚本开机自启
Linux 中使普通用户使用Sudo不需要输入密码

python开机自启动后,远程中止程序如何是实现。

  1. NX板通过wifi模块与电脑热点链接;
  2. 电脑端打开cmd,通过ssh连接NX板,例如;
ssh liuyang@192.168.137.225
  1. 查看正在运行的python进程,输入命令:
ps -ef | grep python

Jetson xavier NX等Jetson系列开发板设置Python脚本的开机自启动(需要激活conda环境下)_第2张图片
可以看到:python3 detect_and_strereo_video.py --source 0这条指令的程序的PID号为11567,输入命令中止程序:

kill -9 11567

正在运行的程序便可被中止:
Jetson xavier NX等Jetson系列开发板设置Python脚本的开机自启动(需要激活conda环境下)_第3张图片

你可能感兴趣的:(Jetson,Xavier,NX,系统,python,conda,开发语言,linux)