首页 > 编程语言 >在树莓派上设置应用程序开机启动的五种方法

在树莓派上设置应用程序开机启动的五种方法

时间:2023-06-02 09:13:10浏览次数:55  
标签:树莓 py sudo 应用程序 sample init 开机 home pi

在树莓派上设置开机自动启动一个应用程序有五种方法:

1、rc.local 配置
2、.bashrc 配置
3、init.d tab 配置
4、systemd 配置
5、crontab 计划任务

我们使用一个例子程序,其功能是在树莓派启动时播报「Welcome to the world of Raspberry Pi」。该程序使用 Espeak 库实现,因此需要安装依赖项。

sudo apt-get install espeak

进入 /home/pi 目录运行下面的命令创建 sample.py 文件。

sudo nano sample.py

贴入下面的代码并保存(CTRL+X 后键入 Y 回车)。

#! /usr/bin/env python
from subprocess import call
call(['espeak "Welcome to the world of Raspberry Pi" 2>/dev/null'], shell=True)

设置开机启动的方法如下。

方法 1:rc.local 配置

编辑 /etc/rc.local 文件,需要使用 root 权限才能写入。

sudo nano /etc/rc.local

在文件的 exit 0 这行之前加入下面的命令文本之后保存这个配置文件:

sudo python /home/pi/sample.py &

配置好之后每当树莓派启动时,都会在其他服务启动前先运行这行命令。也正因为如此,当你的程序依赖某个服务时(如网络),需要等待这些服务正常启动之后才不会出错。

如果你希望记录程序的运行结果,还可以添加程序的输出,例如:

sudo python /home/pi/sample.py & > /home/pi/Desktop/log.txt 2>&1

方法 2:.bashrc 配置

第二种方法是修改 .bashrc 文件。

sudo nano /home/pi/.bashrc

在 /home/pi/.bashrc 文件的末尾添加启动命令文本。

echo Running at boot 
sudo python /home/pi/sample.py

上面的 echo 命令用于显示 .bashrc 文件中的脚本已经开始运行。

Bash RC 配置程序会在树莓派启动时自动运行。.bashrc 文件中的命令在运行时会打开一个新的终端窗口。

方法 3:init.d 目录配置

第三种方法是通过把应用程序加入到 /etc/init.d 目录来实现开机自动运行。这个目录中包含了一系列的启动时加载的脚本,另外这些脚本也可以被配置成在系统关机时执行。

将脚本复制到 /etc/init.d 目录中。

sudo cp /home/pi/sample.py /etc/init.d/
cd /etc/init.d

编辑脚本加入启动配置信息。

sudo nano sample.py
# /etc/init.d/sample.py
### BEGIN INIT INFO
# Provides:          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: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

init.d 脚本还支持设置启动顺序,学习如何编写 init.d 脚本可以参考这个文档

Initd 配置程序会在树莓派启动时自动运行。你还需要确保这个脚本具有执行权限。

sudo chmod +x sample.py
sudo update-rc.d sample.py defaults

方法 4:SYSTEMD 配置

第四种方法是配置 systemd 文件。

sudo nano /lib/systemd/system/sample.service

添加下面的内容:

 [Unit]
 Description=My Sample Service
 After=multi-user.target

 [Service]
 Type=idle
 ExecStart=/usr/bin/python /home/pi/sample.py

 [Install]
 WantedBy=multi-user.target

保存之后退出编辑器即可。

这里定义了一个名为 Sample Service 的服务,我们希望在多用户环境下依然有效启动一次。
ExecStart 参数用于指定启动的命令文本。
Type 设置为 idle 是为了确保其他一切都已加载之后再执行。

如果需要保存运行输出结果,可以按照如下配置:

ExecStart=/usr/bin/python /home/pi/sample.py > /home/pi/sample.log 2>&1

文件权限需要设置成 644:

sudo chmod 644 /lib/systemd/system/sample.service

至此还没结束,需要再进行下面的配置才行。

sudo systemctl daemon-reload
sudo systemctl enable sample.service

方法 5:crontab 计划任务

有关使用 crontab 在启动时运行程序的详细教程可以在 https://shumeipai.nxez.com/2019/12/11/scheduling-tasks-with-cron.html 找到,本文不再赘述。

如果运行的脚本在启动序列中的顺序不重要,那么可以使用上面五种方法中的任意一种。如果脚本依赖于该时间点可用的任何系统功能,例如网络是否已连接上、/home/pi 目录是否已挂载,或者 NTP 已更新系统时间,那么推荐使用 systemd 或 init.d 方法。这两种方法可以控制在系统启动时执行脚本的时机。

 

 

 

出处:https://shumeipai.nxez.com/2023/05/13/run-a-program-on-your-raspberry-pi-at-startup.html

标签:树莓,py,sudo,应用程序,sample,init,开机,home,pi
From: https://www.cnblogs.com/mq0036/p/17450802.html

相关文章

  • Centos上配置服务开机自启动的3种方式
    前言  在服务器上安装的各种中间件,为了防止意外宕机重启导致的后果,一般都需要配置成开机自启动。但是有些中间件的安装过程中并没有提供相关配置开机自启动的说明文档。今天和各位大朋友们聊一聊Centos上配置服务开机自启动的几种方式。Centos下配置服务开机自启动有3种方式:......
  • 树莓派opencv的安装
    树莓派安装opencv的教程层出不穷,但是能用的很少。我这个教程是亲自安装成功的。我之前安装过好几次opencv2.49都失败了,唯独这个opencv3.1成功了。下面开始安装吧1.准备sudoapt-getinstallbuild-essentialgitcmakepkg-configsudoapt-getinstallcmakegitlibgtk2.0-......
  • 把任意程序注册成windows服务, 并设置开机自动启动
    背景最近有个需求让我把原本部署在linux系统上的数据库和对数据库进行CRUD的java程序部署到windows系统上来.问题mysql和tdengine这两个数据库有windows版本,直接安装就行了,并且也已经自动注册成服务,可以自己设置开机自动启动(控制面板->本地服务)但是kafka和zookeepe......
  • Ubuntu 20.04.2 设置程序开机自启动
    Ubuntu20.04.2设置程序开机自启动Ubuntu20.04.2设置程序开机自启动关于Jar包设置开机自启动乌班图20放置开机启动文件的目录改变了首先是进入放置起动脚本的目录cd/etc/profile.droot@dell3640:/home/uadmin/huimv.hy#cd/etc/profile.droot@dell3640:/etc/profile.d......
  • 树莓派&自动运维
    目录基础安装&配置树莓派安装openEuler树莓派安装openssl3-2汇编语言练习:查找最大数3-3:汇编语言练习——通过C语言调用汇编函数3-4汇编调用C函数3-5GCC内联汇编3-6一个裸机程序基础安装&配置树莓派安装openEuler博客链接树莓派安装openssl娄老师博客修改环境变量在/etc/p......
  • 如何使用Next.js创建全栈应用程序
    Next.js乍一看似乎令人生畏,因为有这么多新概念需要掌握。但别担心——在这个循序渐进的教程中,我将为您提供使用Next.js创建您的第一个现代全栈应用程序所需的所有基本信息。在本教程中,我将带您了解Next.js的基础知识,并指导您创建您的第一个全栈应用程序。在本教程结束时,您将......
  • WPF窗体右上角叉叉退出应用程序
    WPF窗体右上角叉叉退出应用程序 WPF窗体右上角叉叉退出应用程序记得xaml里的Window标签响应Closing事件 privatevoidWindow_Closing(objectsender,System.ComponentModel.CancelEventArgse){if(MessageBox.Show("是否确认退出?","温......
  • 在树莓派上实现numpy的LSTM长短期记忆神经网络做图像分类,加载pytorch的模型参数,推理mn
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是LSTM识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:importtorchimporttorch.nnasnnimporttorchvisionimportnumpyasnpimportosfromPILimportImage#定义LSTM......
  • 在树莓派上实现numpy的conv2d卷积神经网络做图像分类,加载pytorch的模型参数,推理mnist
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是卷积识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorchvisionimportdatasets,transformsimportn......
  • 在树莓派上使用numpy实现简单的神经网络推理,pytorch在服务器或PC上训练好模型保存成nu
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是mlp识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:1importtorch2importtorch.nnasnn3importtorch.optimasoptim4fromtorchvisionimportdatasets,transfor......