树莓派4B学习笔记8:开机自启动Python脚本_kill关闭后台脚本

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi)

 本人所用树莓派4B 装载的系统与版本如下:

 版本可用命令 (lsb_release -a) 查询:

 Opencv 版本是4.5.1:

紧接着上篇文章学习的串口通信,今日学习如何让树莓派开机自动启动python脚本:

文章提供测试代码讲解,整体代码贴出、测试效果图

目录

学习目的:

在pi目录下创建一个启动脚本文件:

创建文件startboot.sh:

startboot.sh代码如下:

设置文件权限:

测试startboot.sh文件:

加入启动文件到启动项:

使用/etc/rc.local:

然后重启树莓派检验:

关闭正运行的脚本:

网上学习资料贴出:


学习目的:

home/pi目录下有个串口测试程序“Serial_test.py”

这个程序会在运行时发送一句“Hello world!”,并能够回传串口接受的数据

我们需要将其设置为上电启动运行的程序,使其开机后一直挂起后台运行,并在之后使用kill命令关闭它

在pi目录下创建一个启动脚本文件:

创建文件startboot.sh:

文件名:startboot.sh
位置:home/pi/

startboot.sh代码如下:

#!/bin/sh
sleep 10
cd /home/pi/
sudo python3 Serial_test.py

sleep 10 可以根据自己脚本特性来设置,时间如果太短,可能会出现脚本不能运行的情况(因为需要保证系统已经启动,基本服务已经运行)

设置文件权限:

sudo chmod 777 startboot.sh

测试startboot.sh文件:

使用 bash -x startboot.sh      

来查看脚本执行的详细输出。将显示每行命令的执行情况

以下截图标示了因为我在PC上编辑传输的脚本文件产生的问题:

Windows 风格的换行符(\r\n),而不是 Unix/Linux 风格的换行符(\n)。这通常是因为在 Windows 系统中编辑了脚本文件,然后将其传输到 Linux 系统中执行

解决方式也是很简单:

安装 dos2unix 工具,使用以下命令来转换文件:

sudo dos2unix startboot.sh

 

加入启动文件到启动项:

使用/etc/rc.local:

sudo nano /etc/rc.local

注意,在/etc/rc.local中使用&将脚本放到后台运行是很重要的,因为/etc/rc.local需要在启动时尽快退出。

还有其余的将脚本添加入启动项的方法:这里就不解释了:

使用systemd服务、使用cron@reboot选项

然后重启树莓派检验:

sudo reboot

测试成功:

开机初始化等待10秒结束后,脚本通过串口传来了“Hello World!”,之后也能随时发送测试字符串给树莓派,脚本也会相应回传接收到的信息:

关闭正运行的脚本:

1、使用ps命令查找脚本的PID。例如: 我的脚本名为startboot.sh

ps aux | grep startboot.sh

这将会列出所有包含start_script.sh的行,其中通常包括脚本的进程ID(PID)。

2、一旦找到了PID,使用kill命令来终止它:

sudo kill PID

PID替换为你找到的进程ID:

3、关闭python后台脚本:

但我们的启动文件还打开了一个python脚本在后台运行,因此还有用差不多的方式关闭它:

ps aux | grep python

sudo kill PID

网上学习资料贴出:

树莓派4B设置开机运行python脚本_树莓派4b设置开机启动脚本-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/852604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【方法】如何解除PDF“打开密码”?

很多人会给PDF文件设置密码保护,防止文件被随意打开。那如果后续想要解除“打开密码”,如何操作呢? 首先,我们要分两种情况来看,一种是知道密码的情况下,不需要保护文件了,也就是不想每次打开P…

若依Ruoyi-vue和element admin的区别,该如何选择。

提到中后台的前端框架,每个人都能列举出很多,这其中提及率比较高的就是Ruoyi和element admin两款,很多小伙伴分不清二者,本文为大家详细讲解一下。 一、若依Ruoyi-vue是什么? 若依Ruoyi-Vue是一款基于 Vue.js 开发的…

React基础教程:TodoList案例

todoList案例——增加 定义状态 // 定义状态state {list: ["kevin", "book", "paul"]}利用ul遍历list数组 <ul>{this.state.list.map(item ><li style{{fontWeight: "bold", fontSize: "20px"}} key{item.i…

DAC测试实验——FPGA学习比

一、DAC简介 DAC全称Digital to Analog Converter&#xff0c;即数模转换器。它用于将主控芯片产生的数字值(0和1)转换为模拟值(电压值)。 1、DAC参数指标 2、DAC类型 常用的DAC可大致分为权电阻网络DAC、T型电阻网络DAC、倒T型电阻网络DAC以及权电流型DAC。 3、AD9708/3PD9…

Idea jdk配置的地方 启动时指定切换的地方

jdk 配置的地方 项目sdk 所在位置 管理添加或删除的地方&#xff0c;增加后&#xff0c;可以在在上面切换 启动时指定版本

基于机器学习的CFD模型降阶

降阶模型 ROM 降阶模型ROM&#xff08;Reduced Order Models&#xff09;是一种对高保真度静态或动态模型的简化方法。模型降阶在保留了模型的基本特性与主导效应的同时&#xff0c;大大减少复杂模型的CPU计算时间及存储空间。 ROM的用途&#xff1a; 加速大规模系统的仿真速度…

pytorch学习笔记7

getitem在进行索引取值的时候自动调用,也是一个魔法方法,就像列表索引取值那样,一个意思 import torchvision from torch.utils.data import DataLoaderdata_transformtorchvision.transforms.Compose([torchvision.transforms.ToTensor()] ) test_datatorchvision.datasets.C…

C++面向对象:多态性

多态性 1.概念 多态性是面向对象的程序设计的一个重要特征。在面向对象的方法中一般是这样表述多态的&#xff1a;向不同的对象发送同一个信息&#xff0c;不同的对象在接收时会产生不同的行为。也就是说&#xff0c;每个对象用自己的方式去响应共同的消息。 2.典例 下面这…

R语言绘制三变量分区地图

参考资料&#xff1a; https://mp.weixin.qq.com/s/5c7gpO2mJ2BqJevePJz3CQ tricolore包教程&#xff1a;https://github.com/jschoeley/tricolore 学习笔记&#xff1a;Ternary choropleth maps 1、测试实例 代码&#xff1a; library(ggplot2) library(rnaturalearthdata) …

android studio4.1后不能ButterKnife

麻蛋L最近发现 android studio不能使用ButterKnife啦&#xff01;ButterKnife Injections不维护&#xff0c;butterknife Zelezny也不维护&#xff01;&#xff01;&#xff01;日…难受&#xff0c;兄弟们换下一家&#xff1a;IDsCreate&#xff0c;一毛一样的好用&#xff01…

TCP/IP协议简要介绍

TCP/IP for IP version 4&#xff08;IPv4&#xff09;是一种网络协议&#xff0c;Microsoft Windows使用该协议通过internet与其他计算机进行通信。理想情况下&#xff0c;只要基于Windows的计算机通过网络进行通信&#xff0c;就会使用TCP/IP。 本文介绍TCP/IP协议的组成、协…

蓝牙模块与其他无线技术的比较与选择

在无线通信技术日新月异的今天&#xff0c;蓝牙模块、WiFi、Zigbee和NFC等技术都发挥着至关重要的作用。它们在智能设备、工业自动化、智能家居等多个领域得到广泛应用&#xff0c;各自拥有独特的优点和局限性。本文将对这几种无线技术进行详细的比较&#xff0c;分析它们的优缺…

接口自动化测试工程化——了解接口测试

什么是接口测试 接口测试也是一种功能测试 我理解的接口测试&#xff0c;其实也是一种功能测试&#xff0c;只是平时大家说的功能测试更多代指 UI 层面的功能测试&#xff0c;而接口测试更偏向于服务端层面的功能测试。 接口测试的目的 测试左移&#xff0c;尽早介入测试&a…

vlc多媒体播放器(支持各种本地视频、网络视频、音频及摄像头直播地址)winform(支持全屏)自动适应x86、x64平台插件及重要代码

1、学习vlcControl1及libvlc.dll类方法(x86为例)最新v3.0.21 1.1 本博文以控件(vlcControl1)方式为主介绍 1.2 安装-引用,添加控件到窗体 using Vlc.DotNet.Forms; 1.3 窗体布局、编写代码 打开文件(以本地媒体文件为主)打开地址(以网络媒体地址为主)播放|暂停功能停…

VMware清理拖拽缓存

磁盘空间越用越小&#xff0c;如何快速解决磁盘空间的问题&#xff0c;甩掉烦恼 安装VM tools之后可以通过拖拽的方式把文件拉入虚拟机之中。但每一次拖拽&#xff0c;其实都是现在cache文件夹里面生成一个同样的文件&#xff0c;并使用cp拷贝的方式将其拷贝到拖拽放置的目录中…

C# WPF入门学习主线篇(二十六)—— 绑定路径和数据上下文

C# WPF入门学习主线篇&#xff08;二十六&#xff09;—— 绑定路径和数据上下文 在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;数据绑定是一个核心概念&#xff0c;它允许你将UI控件的属性与数据源属性进行绑定&#xff0c;从而实现数据和UI的…

05-腾讯云Copilot及 向量数据库AI套件介绍

1 Andon Copilot核心功能介绍 2 Andon Copilot覆盖腾讯云售后、售前场景 3 腾讯云向量数据库– AI套件效果 AI 套件是腾讯云向量数据库&#xff08;Tencent Cloud VectorDB&#xff09;提供的一站式文档检索解决方案&#xff0c;包含自动化文档解析、信息补充、向量化、内容检…

HTTPS请求阶段图解分析

HTTPS请求阶段分析 请求阶段分析 请求阶段分析 一个完整、无任何缓存、未复用连接的 HTTPS 请求需要经过以下几个阶段&#xff1a; DNS 域名解析、TCP 握手、SSL 握手、服务器处理、内容传输。 一个 HTTPS 请求共需要 5 个 RTT 1 RTT&#xff08;域名解析&#xff09; 1 RTT…

工业4.0下的PLC进化论:ARMxy计算机如何重塑自动化

智能物流系统的高效与精准成为企业竞争力的关键。在这个背景下&#xff0c;传统的PLC系统因其固有的局限性&#xff0c;如扩展性差、系统封闭等&#xff0c;开始显得力不从心。ARMxy工业计算机作为新一代的PLC替代方案&#xff0c;凭借其低功耗、高性能以及高度的灵活性&#x…

H5单点登录分析介绍(登录状态检验状态透传分析)

文章目录 1、单点登录解决方案1.1、后端保存登录状态1.2、token模式 2、user服务-登录接口2.1、UserController2.2、UserInfoServiceImpl2.3、载荷2.4、响应2.5、Redis Desktop Manager 3、user服务-登录成功获取用户信息回显3.1、UserController3.2、UserInfoServiceImpl3.3、…