python - 在 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 与我的脚本一起工作以获取一些日志或调试信息...非常感谢您提供一些提示非常感谢您的时间
解决方案
尝试在代码中使用绝对路径。它在我的情况下帮助了我。
推荐阅读
- amazon-web-services - AWS Elastic Beanstalk 无法访问 AWS MSK
- javascript - 为什么 Firebase 6.0.2 会抛出错误 firebase_app__webpack_imported_module_11__.auth?
- kubernetes - 具有不同 DNS 的多租户设置的任何解决方案?
- python - 能被 N 整除的随机数
- c - 无法在 LoadRunner 中使用手动关联来捕获 rest api 请求的响应
- python-3.x - 如何在字典中为单个键存储多个唯一值
- gcc - 已经安装了命令行工具,但我无法运行 make 命令
- xml - 使用 bash 合并 xml 数据中的行
- powershell - 使用 REST API 克隆构建定义时出错
- python - 如何使用 keras.utils.to_categorical 检查一个热标签的特征名称?