我的(正在运行的)树莓派程序在启动时无法正常运行

时间:2020-03-22 16:11:25

标签: python cron raspberry-pi servo

我正在编写一个脚本,该脚本(基本上)从raspi gpio引脚控制某些电动机。我已经做了一段时间了,当我启动pi并手动运行程序时,它就可以正常工作。我也有一部分代码,使我可以使用手机通过蓝牙连接并发送一些数据来控制电动机。手动运行该程序也可以正常工作。

现在,我正在尝试使程序在启动时自动启动,因为它最终将进入较大的计算机(船)中,并且我不会将监视器挂在上面。我目前正在通过带有@reboot标记的cron作业来执行此操作。看起来像这样:

#This enables GPIO (as far as I know). The program fails without this command being run first.
@reboot sudo pigpiod

#This runs the python program. ampersand forks the process because it should run continuously.
@reboot python3 /home/pi/Desktop/BoatBrain.py &

#and this lets me connect my phone over bluetooth. The python program has
#a portion takes data from that connection. ampersand forks the process, which
#seems like the right thing to do, since it looks like it blocks other things.
#That is also why it is at the end of the cron table.
@reboot sudo rfcomm watch hci0 &

当我重新启动时,所有作业都可以运行,并且我可以连接手机,因此它一定已经通过了执行python脚本的线路,但是伺服系统我只是无法控制地连接了抖动。让我重申一下,当我离开cronjobs并手动运行此程序时,该程序可以正常工作,几乎没有抖动,因此不会感觉像是电气问题...

如果您需要更多信息,请告诉我,我们将很乐意提供。我倾向于在不了解XD的情况下忽略一切

谢谢!

1 个答案:

答案 0 :(得分:0)

您是否向~/.profile添加了任何内容?这可能就是为什么您自己调用命令时它起作用的原因。如果是这样,请在sudo vi /etc/profile.d/servo.sh中创建与添加到~/.profile的几行相同的文件。然后,系统将重新启动系统。

此外,您可以将所有三个命令放在一个shell脚本中,然后将脚本放在crontab中。然后脚本可以控制它们按顺序启动。您也可以让cronjob将输出写入日志文件,然后查看其内容。您还可以通过查看/var/log/syslog

来检查cron的运行时间

哦,同样是为了进行测试,您可以将@reboot更改为10 * * * *之类的开始时间,然后可以使cron正常工作而不必重新启动。然后,将其更改回@reboot以尝试重新启动。

您的登录名(.profile)丢失了一些,命令同时启动太快,需要以受控顺序启动,或者系统尚未完全准备就绪,但是我对此表示怀疑。