树莓派开机自动运行python程序的方法

article/2025/9/8 10:26:35

方法一 添加程序到rc.local 里

添加到rc.local 里的py脚本文件将会在树莓派开机是自动运行,这种方式适合没有显示器,具体操作如下:

  • 编辑文件 rc.local`
    sudo nano /etc/rc.local
    
  • 添加命令来执行python程序,要使用文件的绝对路径。确保在exit 0 上面注意!如果程序里有死循环,一定要在最后加上 & 表示在后台运行 ,然后保存文件并退出。(Ctrl o 回车保存 Ctrl x退出),如下图
    将会在开机时运行samlpe.py程序, 现在基本都是python3
    在这里插入图片描述
  • 重启即可
sudo reboot

方法二 编辑 .bashrc文件

该方法在登录时运行(启动并直接进入桌面时自动运行),以及每次打开一个新终端或建立一个新的SSH连接时也会运行。把你的命令放在’ /home/pi/.bashrc ‘的底部。程序可以在运行时用’ ctrl-c '终止!,具体步骤

  • 打开.bashrc文件
sudo nano /home/pi/.bashrc
  • 拉到文件的最后一行,在下面添加,其中echo语句用于显示.bashrc文件中的命令是在启动和连接到bash控制台时执行的。例如使用SSH连接到树莓派时将会打印 Running at boot
echo Running at boot 
sudo python3 /home/pi/sample.py

在这里插入图片描述

  • 保存退出重启

方法三 添加脚本到 init.d 目录

这个目录包含在引导过程中启动的脚本(这里的所有程序都是在关闭或重新引导系统时执行的)。

  • 修改程序文件的权限
sudo chmod 777 sample.py
  • 进入 init.d 目录
cd /etc/init.d
  • 创建一个文件名字为 blinker(名称随意设置,只不过我的程序功能是LED闪烁,所以方便这么取)
sudo touch blinker
  • 编辑 blinker 文件
sudo nano blinker
  • 添加以下内容
#!/bin/bash
# /etc/init.d/blinker### BEGIN INIT INFO
# Provides: embbnux
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: blinker initscript
# Description: This service is used to manage a led
### END INIT INFOcase "$1" instart)echo "Starting LED Blink"nohup python3 /home/pi/sample.py &;;stop)echo "Stopping ledblink"#killall ledblink.py#kill $(ps aux | grep -m 1 'python /home/pi/sample.py' | awk '{ print $2 }');;*)echo "Usage: service ledblink start|stop"exit 1;;
esac
exit 0
  • 保存退出,然后修改此文件的权限
sudo chmod 777 blinker
  • 设置开机自启
sudo update-rc.d blinker defaults
  • 启动服务
sudo service blinker start
  • 重启
sudo reboot
  • 停止服务
sudo service blinker stop
  • 取消开机自动运行
sudo update-rc.d blinker remove

方法四 使用systemd文件

systemd提供了一个标准进程来控制在Linux系统启动时运行的程序。注意,systemd只在Raspbian OS的Jessie版本中可用

  • 使用如下所示的命令打开示例单元文件
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
  • 更改文件权限
sudo chmod 644 /lib/systemd/system/sample.service
  • 再输入以下命令,配置systemd在引导序列期间启动
sudo systemctl daemon-reload
sudo systemctl enable sample.service
  • 重启
sudo reboot
  • 如果需要停止服务
sudo systemctl stop sample.service
  • 上面的方法只能停止当前运行,下次开机或者重启还是会自动执行程序文件,如不需要下次开机自启动,输入
sudo systemctl disable sample.service

方法五 使用 crontab

  • 编辑 crontab 文件
sudo crontab -e
  • 添加以下命令
  • @reboot在引导时运行命令 后面 加上需要执行的命令
  • 第二行运行python程序并将输出保存在log.txt中
@reboot sudo python3 /home/pi/Desktop/sample.py/home/pi/Desktop/log.txt
  • 保存重启

http://chatgpt.dhexx.cn/article/QuWJe4kM.shtml

相关文章

linux_systemd启动方式解析,如何开机自动登录,开机自动运行程序

楼主使用的是天嵌的IMX6Q。 最新的官方yocto,4.9_123编译出来的文件系统。 其启动方式是系统服务的方式,记录一下: 如何修改串口控制台自动登录,和开机自动运行程序 Linux系统的启动方式有点复杂,而且总是有需要优化的地方。传…

批处理+开机自动执行

一、 写批处理脚本请参考:批处理 二、 只需要将上面写的xxx.bat文件放到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp路径下,开机就会自动执行,执行你想要的开机设置或者打开一些软件

定时开机-开机自动运行程序-定时关机(windows 下)

前言 电脑长时间未关机第二天来就会完全卡死。将有规律、重复性动作自动化。 目录 一、设置定时开机 二、设置开机启动自定义应用 三、设置定时关机 一、设置定时开机 定时开机这个,可能需要看“硬件”,我能成功主要是因为我的BIOS上有定时开机这个选项&#xff…

Beaglebone Black——开机自动运行程序

上接《修改设备树文件》一文 现在每次开机都能看到/dev/rtc1了,那么我们还需要一个应用程序来把时间从RTC读取出来更新到系统中,然而通过linux系统自带的一个程序hwclock,我们就可以把RTC的时间更新到系统中来,不需要自己动手省了…

树莓派开机自动运行python程序的两种方式

本文以一个简单的python程序为例,介绍树莓派开机程序自启动的两种方式,以及其中可能遇到的问题。python程序myled.py如下,保存路径为/home/pi/myled.py。 import RPi.GPIO as GPIO import timeGPIO.setmode(GPIO.BOARD) GPIO.setup(35, GPIO…

最小Linux系统中如何实现开机自动运行程序(进程)

一、目标 将交叉编译生成的可执行文件,放到最小Linux系统中,然后实现板子开机后,最小Linux系统运行起来后,自动执行可执行文件,并将可执行文件进程挂到后台运行。 二、实现 1、生成目标可执行文件 例: …

计算机启动windows程序,win7系统开机自动运行程序怎么设置|win7电脑开机启动程序的方法...

一些程序在一开机的时候就会自动打开,这样就不需要自己去打开了。那么win7开机自动运行程序怎么设置?下面就跟大家说说具体的设置步骤。 win7电脑开机启动程序的方法: 一、软件自带法: 大多数软件都提供开机自启动的功能&#xff…

Ubuntu添加开机自动运行程序

ubuntu下有很多中开机自动运行程序的方法,在开机的不同过程中可以启动不同的程序.如在开机启动时自动运行程序,是通过修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如&#xff…

树莓派Pico 开机自动运行程序

用Thonny编写的程序通过MicroPython运行后再重新上电程序不运行,需再次在Thonny内点击运行按钮才行。 以下步骤开机可自动运行: 程序必须保存在树莓派内部空间(另存时如串口正常会出现保存本机还是pico的选项,如图)。注意&#…

嵌入式Linux设置开机自动运行程序(基于BusyBox init)

文章目录 目的BusyBox init启动流程inittabrcS 和 rcK 设置开机自动运行程序总结 目的 开机自动运行程序,或者说系统启动时自动运行程序,这是经常会需要用到的功能。这个功能通常依托于 init 程序实现。 init 是Linux在内核启动完成之后第一个启动的程序…

Linux笔记:开机自动运行程序

文章目录 目的rc.localSysVinitSystemd在Systemd中实现rc.local注意事项SysVinit和Systemd的联系与区别总结 目的 开机自动运行程序,或者说系统启动时自动运行程序,这是经常会需要用到的功能。在linux中实现随系统启动运行程序的功能通常有三种&#xf…

Big-Endian Little-Endian

大端模式Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 小端模式Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 小端模式 :强制转换数据不需要调整字节内容。 大端模式 &a…

字节序:Big Endian 和 Little Endian

最近碰到了node.js中的buf.readUInt16LE(offset[, noAssert])方法: 根据指定的偏移量,使用特殊的 endian 字节序格式读取一个无符号 16 位整数。若参数 noAssert 为 true 将不会验证 offset 偏移量参数。 这意味着 offset 可能会超出 buffer 的末…

字节序——Big Endian和Little Endian

Big Endian和Little Endian 一、Endian 的起源二、字节序之 Little-Endian&Big-Endian三、为什么要注意字节序四、网络序和主机序五、Go 中的字节序 一、Endian 的起源 在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通…

小端格式和大端格式(Little-EndianBig-Endian)

小端格式和大端格式(Little-Endian&Big-Endian) 1 字节序 字节序,也就是字节的顺序,指的是多字节的数据在内存中的存放顺序。 在几乎所有的机器上,多字节对象都被存储为连续的字节序列。 例如:如果C/C中的一个int型变量 a…

BIG-ENDIAN VS LITTLE-ENDIAN

1. 计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。 举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。 字节序&…

什么是字节序? Big-Endian vs Little-Endian 举例说明

计算机只理解二进制。这意味着 0 和 1 构成了计算机使用的语言。 一位是 0 或 1 。8 位组成一个字节。从这些简单的部分,我们可以构建极其复杂的连接计算机系统来渲染视频、显示来自世界各地的文本并计算极其复杂的算法。 一些数据(一些英文字符&#…

java -- Big Endian and Little Endian 大端和小端概念讲解及如何转换

什么是大端、小端? 字节是计算机中数据处理的基本单位。 计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte8bit)。 计算机进行数据处理时,一次存取、加工和…

浅谈大小端(Endian)与位域

目录 字节序 位序 常见位序的错误理解 以太网的大小端 以太网的字节序 以太网的位序 位域中的大小端 位域遇上大小端以太网通信 大端CPU发送 小端CPU发送 位域大小端问题的解决措施 大小端问题浪费了太多应用、驱动、逻辑工程师太多的时间,无时无刻都有人…

Endian

字节序(Endian)即字节顺序(Byte-Order),又称为端序或尾序(Endianness)。描述的是计算机如何组织字节组成对应的数字,是多字节数据存储和传输时字节的顺序, 是多字节数据在…