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

2023-05-16

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环境。
错误如图所示:
在这里插入图片描述
方案无效原因:
开机启动脚本是在用户登录之前,所以不能成功。但我们可以对命令行进行相关的操作,即对~/.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

在这里插入图片描述
可以看到:python3 detect_and_strereo_video.py --source 0这条指令的程序的PID号为11567,输入命令中止程序:

kill -9 11567

正在运行的程序便可被中止:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 改变全局变量值得两种方法

    方法一 xff1a 指针法 include lt iostream gt using namespace std void change int a void main int t change amp t 注意这里是传入变量的地址 xff
  • QT中为程序加入超级管理员权限

    QT的一些文件操作 xff0c 注册表的操作等 xff0c 有些操作会无效 xff0c 主要是因为没有对C盘的相关权限 解决方法 xff1a 1 mingw编译器 在pro工程文件中加入 span class hljs attribute
  • QT截图非顶层窗口的画面(获取窗口句柄)

    我们知道QT里截图的代码很简单 xff0c 很多例子都是截取桌面 xff0c 或截取整个屏幕 那如果要截取指定窗口的画面呢 xff1f 即使该窗口不在桌面最顶层显示 我们也能截到它的图片吗 xff1f 当然可以 xff0c 只要我们拿到该窗
  • QEventLoop会卡住的解决方法

    问题是这样的 xff1a 在一个线程中有下面一段代码 QEventLoop span class hljs keyword loop span span class hljs comment span span class hljs lab
  • android adb 模拟点击、滑动、输入、按键

    模拟输入 001 adb shell input text 001 模拟home按键 adb shell input keyevent 3 模拟点击 540 1104 坐标 adb shell input tap 540 1104 模拟滑动
  • 结构体在内存中的对齐规则

    一个结构体变量定义完之后 xff0c 其在内存中的存储并不等于其所包含元素的宽度之和 例一 xff1a include lt iostream gt using namespace std struct X char a
  • curl请求常用参数和返回码

    curl是一个用于传输数据的工具 xff0c 支持各种协议 xff0c 如HTTP FTP SMTP等 以下是一些常用的curl请求参数及其作用 xff1a X request xff1a 指定HTTP请求方法 xff0c 常见的有GET
  • ubuntu中python版本切换

    shell里执行 xff1a sudo update alternatives install usr bin python python usr bin python2 100 sudo update alternatives insta
  • CMAKE基础使用

    1 目录结构 xff1a 2 顶层cmake内容 xff1a span class token function cmake minimum required span span class token punctuation span V
  • URL格式

    一 URL基本格式 一个完整的url包含方案 用户名 密码 主机名 端口 路径 参数 查询和片段 xff0c 格式如下 xff1a lt scheme gt lt user gt lt password gt 64 lt host gt l
  • __IO uint16_t

    STM32里的类型定义 xff0c 见如下说明 xff1a typedef volatile unsigned short vu16 typedef IO uint16 t vu16 IO definitions access restri
  • 串口波形分析(TTL,RS232,RS485)

    TTL xff0c RS232 xff0c RS485波形分析 本文转自 xff1a http blog 163 com qiu zhi2008 blog static 60140977201092651854445 http www cn
  • Java数字类型转byte数组

    文章目录 方法1 自己写int转byte数组byte数组转int参考 xff1a https blog csdn net qq 41054313 article details 88424454 方法2 使用java NIO包的功能int转
  • 头文件和库函数的区别

    1 头文件中有函数的申明 xff0c 库文件实现函数的定义 比如 xff0c printf函数 使用时应包括stdio h xff0c 打开stdio h你只能看到 xff0c printf这 个函数的申明 却看不到printf具体是怎么实
  • C语言--字符串的截取

    今天碰到了一个字符串截取的功能实现问题 xff0c 比较常见所以就做下记录 一般的实现是这样的 xff1a include lt stdio h gt include lt string h gt int main void char de
  • 使用 JWT 让你的 RESTful API 更安全

    传统的 cookie session 机制可以保证的接口安全 xff0c 在没有通过认证的情况下会跳转至登入界面或者调用失败 在如今 RESTful 化的 API 接口下 xff0c cookie session 已经不能很好发挥其余热保护
  • CAN报文解析—案例

    1 CAN报文定义 CAN报文是指发送单元向接受单元传送数据的帧 我们通常所说的CAN报文是指在CAN线 xff08 内部CAN 整车CAN 充电CAN xff09 上利用ECU和CAN卡接收到的十六进制报文 2 CAN协议中CAN报文种类
  • 单片机中,intrins.h头文件中各函数详解:空指令_nop_(),移位函数_crol_、_cror_

    intrins h 在 C51单片机编程中 xff0c 我们经常使用到 nop 延时一个机器周期 如果晶振是12M xff0c 则延时1 us xff0c 该空函数在头文件intrins h中 头文件 INTRINS H 中的函数使用很方便
  • Linux 下模拟Http 的get or post请求(curl和wget两种方法)

    一 get请求 xff1a 1 使用curl命令 xff1a curl 34 http www baidu com 34 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地 curl i 34 http www baidu co
  • QT入门基础认知(三个常用类、三种对话框类型、信号和槽)

    1 简单介绍 xff1a 1 1 三个常用类 xff08 Qwidget类 QDialog类 QMainwindow类 xff09 Qwidget类 xff1a 继承与QObject类和QPaintdevice类 xff0c 所有用户界面对

随机推荐