首页 > 解决方案 > 在 RPi 启动时启动 Python 脚本不起作用

问题描述

RPi 1B 带 V1 凸轮。当按下与 gpio 挂钩的按钮时,Python 脚本会拍照。然后图片通过 Mutt 通过电子邮件发送。一步一步做时一切正常。但在启动时自动启动时未按预期执行。

import subprocess
from datetime import datetime
from gpiozero import Button

button = Button(17)


while True:
        button.wait_for_press()
        time = datetime.now()
        filename = "capture-%04d%02d%02d-%02d%02d%02d.jpg" % (time.year, time.month, time.day, time.hour, time.minute, time.second)
        subprocess.call("raspistill -t 500 -o %s" % filename, shell=True)
        subprocess.call("echo "" | mutt -s 'Someone at the door' -i messageBody.txt myname@mailprovider.com -a %s" % filename, shell=True)

键入时一切正常:

$ python raspicam.py

我在几秒钟内收到一封带有图片的精美电子邮件。

下一个合乎逻辑的步骤是让这个脚本在启动时启动:

$ nano launcher.sh
#!/bin/sh
# launcher.sh
cd /
cd home/pi
python doorbell02.py
cd /

$ chmod 755 launcher.sh

$ sh launcher.sh

然后通过 cron 在启动时启动它:

$ mkdir logs

$ sudo crontab -e

添加:@reboot sh /home/pi/launcher.sh >/home/pi/logs/cronlog 2>&1

下次重新启动时,除了通过 mutt 发送邮件外,一切正常。

$ ps aux表明我的 python 脚本和脚本启动器属于“root”......是麻烦来自哪里?

root       475  0.0  0.0      0     0 ?        S    16:51   0:00 [cifsd]
root       500  0.0  0.6   7932  2300 ?        Ss   16:51   0:00 /usr/sbin/cron -f
root       502  0.0  0.6   9452  2384 ?        S    16:51   0:00 /usr/sbin/CRON -f
root       506  0.0  0.3   1924  1148 ?        Ss   16:51   0:00 /bin/sh -c sh /home/pi/launcher.sh >/home/pi/logs/cronlog 2>&1
root       511  0.0  0.2   1924  1108 ?        S    16:51   0:00 sh /home/pi/launcher.sh
root       513  1.5  2.5  34348  9728 ?        Sl   16:51   4:25 python doorbell02.py

我也无法让 pdb 与我的脚本一起工作以获取一些日志或调试信息...非常感谢您提供一些提示非常感谢您的时间

标签: pythonraspberry-pistartupmutt

解决方案


尝试在代码中使用绝对路径。它在我的情况下帮助了我。


推荐阅读