在启动时在Raspberry Pi上运行程序的五种方法
在本教程中,我们将向您展示在启动时在Raspberry Pi上运行程序的五种方法。 可用于在引导时运行程序的五种方法是:
- 在rc.local
- 的.bashrc
- init.d选项卡
- systemd
- crontab中
示例程序
您可以使用任何要在启动时运行的程序; 在本教程中,我们使用的是一个示例python程序,它将在Raspberry Pi的启动时发言。这个示例程序将使用Espeak 包使Raspberry pi说“欢迎来到机器人世界”。
如果您没有安装Espeak 软件包,请在终端中运行以下命令进行安装:
sudo apt-get install espeak
要了解有关如何获取Raspberry Pi发言的更多信息,我们在此提供了一个教程。
在/ home / pi目录中,打开一个文件进行编辑:
sudo nano sample.py
并输入以下代码并保存(按CTRL + X并输入Y)。
#!/ usr / bin / env python 来自子进程导入调用 call(['espeak“欢迎来到机器人世界”2> / dev / null'],shell = True)
方法1:rc.local
在启动时在Raspberry Pi上运行程序的第一种方法是使用文件rc.local。为了在Pi启动时运行命令或程序,可以向rc.local 文件添加命令。如果您想在无头模式下启动Pi(即没有连接的显示器),并且在没有配置或手动启动的情况下运行程序,这将特别有用。
编辑rc.local
在你的Pi上, 使用你选择的编辑器编辑文件/etc/rc.local 。您必须使用root权限对其进行编辑:
sudo nano /etc/rc.local
添加命令以执行python程序,最好使用文件位置的绝对引用(首选完整的文件路径)。务必将行退出0 保留在末尾,然后保存文件并退出。在nano中,要退出,请键入Ctrl-x,然后键入Y.
如果您的程序连续运行(运行无限循环)或者可能不会退出,则必须确保通过在命令末尾添加&符号(“&”)来分叉该过程,如:
sudo python /home/pi/sample.py&
Pi将在启动时运行此程序,并在其他服务启动之前运行。如果您不包含“&”符号,并且程序连续运行,则Pi将无法完成其启动过程。&符号允许命令在单独的进程中运行,并在主进程运行时继续引导。
现在重启Pi来测试它:
sudo重启
提示
此外,请务必引用绝对文件名,而不是相对于您的主文件夹。例如,使用` / home / pi / myscript.py` 而不是` myscript.py` 。
如果将脚本添加到/etc/rc.local中,则会将其添加到引导顺序中。如果您的代码卡住,则启动序列无法继续。因此,请注意您尝试在启动时运行的代码并多次测试代码。您还可以将脚本的输出和错误写入文本文件(例如log.txt)并使用它进行调试。
sudo python /home/pi/sample.py&> /home/pi/Desktop/log.txt 2>&1
方法2:.bashrc
在启动时在Raspberry Pi上运行程序的第二种方法是修改.bashrc 文件。使用.bashrc方法,您的python程序将在引导时运行,并且每次打开新终端时,或者在建立新的SSH连接时运行。将命令放在'/home/pi/.bashrc'的底部。该程序可以在运行时使用'ctrl-c'中止!
sudo nano /home/pi/.bashrc
转到脚本的最后一行并添加:
echo在启动时运行 sudo python /home/pi/sample.py
上面的echo语句用于显示.bashrc文件中的命令在启动时执行以及连接到bash控制台。
现在重启Pi以听到Pi在启动时发言。
sudo重启
下图显示添加到.bashrc文件的命令即使在打开新终端时也会执行。
方法3:init.d目录
在启动时在Raspberry Pi上运行程序的第三种方法是将程序(在启动时运行)添加到/etc/init.d 目录。此目录包含在引导过程中启动的脚本(此外,此处的所有程序都在您关闭或重新引导系统时执行)。
使用以下行将要在启动时运行的程序添加到init.d目录:
sudo cp /home/pi/sample.py /etc/init.d/
移至init目录并打开示例脚本
cd /etc/init.d sudo nano sample.py
将以下行添加到示例脚本中,使其成为Linux标准库(LSB)(软件系统结构的标准,包括Linux 操作系统中使用的文件系统层次结构)init脚本。
#etet/init.d/sample.py ### BEGIN INIT INFO #提供:sample.py #Required-Start:$ remote_fs $ syslog #Required-Stop:$ remote_fs $ syslog #Default-Start:2 3 4 5 #Default-Stop:0 1 6 #Short-Description:启动时启动守护程序 #说明:启用守护进程提供的服务。 ### END INIT INFO
init.d脚本需要记录上述运行时依赖项,以便可以验证当前的引导顺序,使用这些依赖项引导的顺序,以及并行运行引导脚本以加快引导过程。
您可以按照此处的指南学习编写init.d脚本。
通过更改其权限,使init目录中的示例脚本可执行。
sudo chmod + x sample.py
运行此命令:
sudo update-rc.d sample.py默认值
现在重启以听到Pi在启动时发言。
sudo重启
方法4:SYSTEMD
在启动时在Raspberry Pi上运行程序的第四种方法是使用systemd文件。systemd提供了一个标准流程,用于控制Linux系统启动时运行的程序。请注意,systemd仅可从Raspbian OS的Jessie版本获得。
步骤1-创建单元文件
使用如下命令打开示例单元文件:
sudo nano /lib/systemd/system/sample.service
添加以下文字:
[单元]说明=我的样品服务之后= multi-user.target[服务]类型=空闲ExecStart = / usr / bin / python /home/pi/sample.py[安装]WantedBy = multi-user.target
您应该保存并退出nano编辑器。
这定义了一个名为“Sample Service”的新服务,我们要求在多用户环境可用时启动它。“ExecStart”参数用于指定我们要运行的命令。“Type”设置为“idle”以确保ExecStart命令仅在其他所有内容都已加载时运行。请注意,路径是绝对路径,并定义Python的完整位置以及Python脚本的位置。
为了将脚本的文本输出存储在日志文件中,您可以将ExecStart行更改为:
ExecStart = / usr / bin / python /home/pi/sample.py> /home/pi/sample.log 2>&1
单元文件的权限需要设置为644:
sudo chmod 644 /lib/systemd/system/sample.service
第2步 - 配置systemd
现在已经定义了单元文件,我们可以告诉systemd在引导序列期间启动它:
sudo systemctl daemon-reload sudo systemctl enable sample.service
重新启动Pi,您的自定义服务应该运行:
sudo重启
方法5:crontab
Raspberry Pi 1型号B +(B PLUS)512MB电脑板(2014)
通过Raspberry Pi
可以在此处找到有关使用crontab获取在引导时运行的程序的详细教程。
只要在启动顺序中运行Python脚本的位置并不重要,您就可以使用这些方法中的任何一种在启动时运行程序。如果您的脚本依赖于该时间点可用的任何系统功能,例如连接和可用的网络功能,则/ home / pi目录已安装并可供使用或 系统时间已由NTP更新, 那么它将理想的使用systemd或init.d方法。这些方法控制启动时执行脚本的启动点。
在启动时在Raspberry Pi上运行程序的五种方法相关推荐
- python程序执行三种方式,Python运行程序的三种方法
对于python中运行程序的方法,是我们初学时就已经掌握过的了,想必大家会的只是其中的一两种方式. 本篇对程序运行的三种方式进行了整理,分别是:Python的解释器.交互式运行和PyCharm,大家在 ...
- python运行时很卡-Python代码运行速度慢?这五种方法很管用
对于Python很多人还是比较了解的,虽然说Python有很多优势但同样具有劣势,Python最大的劣势就是运行效率慢,那么如何提高Python代码运行速度呢?这五种方法很管用. 1.PyPy:在选择 ...
- Linux:检查当前运行级别的五种方法
2019独角兽企业重金招聘Python工程师标准>>> 运行级就是Linux操作系统当前正在运行的功能级别.存在七个运行级别,编号从0到6.系统可以引导到任何给定的运行级别.运行级别 ...
- mac 强制退出程序_强行退出Mac上应用程序的6 种方法
虽然Mac os系统很流畅,但是我们在使用的时候偶尔会出现一些软件与系统不兼容情况.或者一些不良应用在我们使用的时候突然就卡主了,这时我们要么等应用恢复响应,或者干脆强制退出它,小编这里为你介绍6种快 ...
- raspberry pi_在Raspberry Pi上试用Docker
raspberry pi 在Opensource.com上,我可以在日常工作中了解很多非常有趣的新兴技术. 但是我并不总是可以自己深入研究它们. 在过去的这个周末,我留出了一些时间来做. 几年来,我一 ...
- (四)Raspberry Pi上的人工智能人脸检测
目录 介绍 在Raspberry Pi上安装组件 在Raspberry Pi上运行检测器 性能注意事项 下一步 在这里,我们解释了用于人脸识别的简单人脸数据库的结构,然后开发了将人脸添加到人脸数据库的 ...
- 在Raspberry Pi上安装HDMI-CEC
转自https://www.labno3.com/2021/02/01/using-hdmi-cec-on-a-raspberry-pi/ HDMI-CEC是一种特殊的协议,用于电视与另一个设备通过H ...
- raspberry pi_如何在Raspberry Pi上使用NetBSD
raspberry pi 您是否有旧的Raspberry Pi散布着灰尘,也许是在最近的Pi升级之后? 您对BSD Unix感到好奇吗? 如果您对这两个问题都回答"是",您将很高兴 ...
- 使用Exagear Desktop在raspiberry pi上运行x86程序
有 ARM Chromebook 使用经验的朋友们应该都知道 ARM Chromebook 在可折腾性上要比 x86 的 Chromebook 要差上不少,最主要一个原因就是在 Crouton 下的 ...
- 树莓派支持uvi协议吗_树莓派如何控制电视机,在Raspberry Pi上安装HDMI-CEC
在本教程中,我将展示如何使用HDMI-CEC和树莓派来控制电视. HDMI-CEC是一种特殊的协议,用于电视与另一个设备通过HDMI电缆进行通信.该协议允许电视控制另一个设备,同时也允许该设备控制电视 ...
最新文章
- HuggingFace BERT源码详解:基本模型组件实现
- 如何阅读《深入理解计算机系统》?(文末送书)
- REST / HTTP方法:POST与PUT与PATCH
- Linux基本命令 (一)
- a start job is running for延迟90s的解决办法
- 查一个字段中字符集超过30的列_Mysql 的字符集以及带来的一点存储影响
- Qt的特性——信号和槽
- pdf reference官方指南之-语法基础和文件结构
- 图片标注工具Labelme的安装及使用方法
- 那个超级浏览器好(跨境浏览器哪个好)
- excel中的相对引用、绝对引用和混合引用
- (2/2) sharex录制屏幕没有声音,升级高版本的 sharex
- C语言散列法求英文字母字符串求余,c语言求余数
- 中文实时语音识别引擎
- 求生之路2服务器无限刷特感,求生之路2全部联机方法一览_求生之路2怎么联机_牛游戏网...
- android 酷狗音乐 ip,“音乐+IP”融合模式 夯实酷狗音乐原创硬实力
- XAMPP+WordPress+花生壳搭建博客
- 微信公众号中 JavaScript 获取用户周边的标志性建筑列表
- 【蓝桥杯 数独填数 DFS】
- 电信说的几兆带宽和自己看到的下载/上传速度有什么关系
热门文章
- java processing_1 Processing入门简介
- autoCAD恐吓式销售_恐吓式软文的例子?恐吓式软文营销经典案例分享
- 复旦计算机对口,2019年长宁区公办初中划片电脑派位对口入学方式
- IBM Platform LSF在IC行业内的使用
- Shell命令提示符
- 计算机学院实验报告,大学计算机实验报告-EXCEL电子表格实验
- Linux系统下安装matla版libsvm
- iOS依赖注入框架系列(一):介绍Typhoon
- phyton方面相关书籍
- 在文档中怎么画横线实线_怎样在一个word文档中添加一根实线,用作分开不同