我目前正在Raspberry Pi 4 Model B上使用crontab在 Boot 时启动我的python脚本。
@reboot sh /home/pi/start.sh > /home/pi/logs/cronlog 2>&1 &
我的start.sh
脚本如下所示:
#!/bin/sh
# start.sh
cd /home/pi/Desktop/Python_Scripts/Projet
sudo python3 main.py
如果我手动运行shell脚本,一切正常,但当它在 Boot 时运行时,串行通信不工作。
我已经尝试在我的python脚本中添加一些延迟,以等待串行接口完全初始化,但它仍然不起作用。
提前感谢您的任何帮助
**EDIT:**我必须澄清,如果我运行
sh /home/pi/start.sh > /home/pi/logs/cronlog 2>&1 &
然而,如果我在 Boot 时用crontab运行它,唯一不起作用的是串行通信(用示波器查找信号,它不通过串行接口发送数据),但程序的其他方面都运行得很好。
3条答案
按热度按时间e5nqia271#
很可能是
cron
在串行接口初始化之前执行,导致python脚本引发异常。这可以通过添加相对较小的延迟(即:30秒)插入到python脚本中,看看它是否正常工作。
如果脚本只需要运行一次,一个简单的解决方法是使用
autostart
文件而不是cron
。此文件中的命令仅在成功启动gui后运行。此文件位于/etc/xdg/lxsession/LXDE-pi/autostart
gojuced72#
试试这个:
1.开放终端
1.运行
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
1.将此行添加到文件中:
1.保存并退出
r1zhe5dt3#
I also use Raspberry pi4.
I reccomend you use
crontab -e
withoutsudo
.My
crontab -e
like this:@reboot bash /usr/bin/start_counter.sh
My
/usr/bin/start_counter.sh
:In my way its work. I hope this help you.