首页 > 编程问答 >Raspberry Pi 4 启动时自动运行

Raspberry Pi 4 启动时自动运行

时间:2024-07-23 16:00:19浏览次数:10  
标签:python bash raspberry-pi4

我有这样的问题 我编写了 python 脚本,并希望通过 shell 脚本启动时自动运行它。

我尝试以这种方式将此 .sh 文件添加到 crontab -e 中:

@reboot /home/path/to/my_script.sh

并在 rc.local 中:

/home/path/to/my_script.sh &

我的脚本:

conda activate /path/to/environment/bin/activate
python3 /home/path/to/main.py

在 python 文件中,我制作了写入 UART 的计数器:

import serial


ser = serial.Serial("/dev/ttyAMA0", 115200)
l = 1
while (1)
    print (l)
    ser.write(str(l).encode("utf-8"))
    l += 1

但是没有任何东西可以帮助我在启动时运行它。


你遇到的问题很可能是因为环境变量和工作目录在启动时没有设置正确。以下是一些可以解决这个问题的步骤:

1. 使用绝对路径:

  • 确保在 .sh 脚本中使用 conda、python3 和 main.py 的绝对路径 。例如: bash #!/bin/bash source /home/pi/anaconda3/etc/profile.d/conda.sh conda activate /home/pi/path/to/environment /usr/bin/python3 /home/pi/path/to/main.py

2. 指定工作目录:

  • .sh 脚本中使用 cd 命令切换到包含 main.py 的目录: bash #!/bin/bash cd /home/pi/path/to/ source /home/pi/anaconda3/etc/profile.d/conda.sh conda activate /home/pi/path/to/environment /usr/bin/python3 main.py

3. 检查用户权限:

  • 确保运行脚本的用户 (默认是 pi ) 拥有执行 .sh 脚本和访问 conda 环境、python3 和 main.py 的权限

4. 使用 & 后台运行:

  • 为了避免脚本阻塞启动过程,在 rc.local 和 crontab 中使用 & 符号将脚本放到后台运行: /home/path/to/my_script.sh &

5. 检查串口配置:

  • 确保 /dev/ttyAMA0 是正确的串口设备,并且波特率设置 (115200) 与接收设备一致。

6. 检查日志文件:

  • 检查系统日志文件 /var/log/syslog /var/log/messages ,查看是否有任何与脚本执行相关的错误信息。

调试建议:

  • 可以尝试在脚本中添加 echo 语句或将输出重定向到文件,以便跟踪脚本的执行情况。例如: bash #!/bin/bash echo "Starting script..." >> /home/pi/script.log 2>&1 cd /home/pi/path/to/ source /home/pi/anaconda3/etc/profile.d/conda.sh >> /home/pi/script.log 2>&1 conda activate /home/pi/path/to/environment >> /home/pi/script.log 2>&1 /usr/bin/python3 main.py >> /home/pi/script.log 2>&1 echo "Script finished." >> /home/pi/script.log 2>&1

通过以上步骤,你应该能够解决脚本无法在 Raspberry Pi 启动时自动运行的问题。 如果问题仍然存在,请提供更详细的错误信息或日志文件,以便我提供更具体的帮助。

标签:python,bash,raspberry-pi4
From: 78782089

相关文章

  • Python 上债券的内部收益率
    在Excel中,有一个公式(IRR.Payment:https://support.microsoft.com/fr-fr/office/fonction-tri-paiements-de1242ec-6477-445b-b11b-a303ad9adc9d)计算债券的IRR。我正在尝试在python算法上重现这一点,以便能够在我的代码中计算它。我在网上找到了这段代码:importnumpy......
  • 使用Python连接ftps服务器时nlst返回错误
    我可以使用TotalCommander登录服务器:ftps://publishedprices.co.il用户名:“奥舍拉德”密码为空并带有lftp-uosherad:publishedprices.co.il但是当我尝试登录并使用Python获取文件列表时nlst函数返回超时代码:fromftplibimportFTP_TLS......
  • 在我的 python 代码中,我无法使用 slixmpp 连接到 Openfire 服务器
    在我的python代码中,我无法连接到Openfire服务器。我想连接到OpenFire服务器我的代码是importthreadingimporttkinterastkfromtkinterimportsimpledialog,scrolledtextimportjsonimportloggingimportasynciofromslixmppimportClientXMPPcla......
  • 如何在Python中获取字符的unicode?
    想要获取中文或越南语的汉名和日文字符的unicode我已经尝试过这些代码text="......
  • 三种语言实现计算逆序对的数量(C++/Python/Java)
    题目给定一个长度为......
  • python项目中__init__.py是什么文件有什么作用
    __init__.py 文件在Python项目中的作用主要是将目录标识为一个Python包。它在包的初始化过程中起到了重要作用。具体来说,__init__.py 文件有以下几个功能:1.标识包:-当一个目录中包含 __init__.py 文件时,这个目录就被视为一个Python包。这样,Python解释器就能够识别......
  • 从零开始构建你的第一个Python Web应用
    在本文中,我们将带领你从零开始构建一个简单的PythonWeb应用。不需要任何先验知识,我们会一步步地指导你完成设置、框架选择、代码编写到部署的整个过程。无论你是Web开发新手还是希望扩展技能的老手,这篇文章都将为你提供一个实践操作的起点。一、前言随着互联网技术的飞速......
  • Python中的global关键字是如何工作的?
    在Python中,global关键字扮演着特殊而重要的角色,它主要用于在函数内部声明全局变量。理解global关键字的工作原理,首先需要明确Python中变量作用域的概念,以及为什么需要global关键字。下面,我将详细解释global关键字的工作机制,包括其作用、使用场景、注意事项,以及它在Python编......
  • Python中enumerate()函数
    Python中enumerate()函数的作用是什么?enumerate()函数在Python中是一个非常有用的内置函数,它用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。使用enumerate()可以使你在循环中获取每个元素的同时,也能......
  • 我无法解决 python 捕获脚本中的此错误
    defclick_folder(self,文件夹名称):尝试:#单击主文件夹main_folder=self.wait.until(EC.presence_of_element_located((By.XPATH,f"//div[contains(@class,'folders-text_block')]//div[text()='{folder_name}']")))main_folder.click()print......