【发布时间】:2019-10-28 21:29:02
【问题描述】:
我的树莓派上有一个灯光秀。我还运行 crontab 来自动化它。当我在终端中运行脚本时,它运行正常并且工作完美。当 cron 运行时,它将无法正常工作。我将它设置为在演出前 15 秒关灯,开始演出,15 秒后重新打开。现在,当作业运行时,它只播放节目,继电器永远不会触发以保持灯亮或熄灭。我有 3 个脚本。一是表演,二是开灯和关灯。我在这里真的很困惑。
演出
/home/pi/lightshowpi/./lightsoff.sh
sleep 15
$SYNCHRONIZED_LIGHTS_HOME/bin/start_playlist_once $SYNCHRONIZED_LIGHTS_HOME/mus$
sleep 15
/home/pi/lightshowpi/./lightson.sh
开灯
#!/bin/bash
export SYNCHRONIZED_LIGHTS_HOME=/home/pi/lightshowpi
python py/hardware_controller.py --config=overmech.cfg --state=on
关灯
#!/bin/bash
export SYNCHRONIZED_LIGHTS_HOME=/home/pi/lightshowpi
python py/hardware_controller.py --config=overmech.cfg --state=off
所有这些都是带有chmod +x 的.sh 文件。谢谢
【问题讨论】:
-
对不起,你能澄清一下发生了什么吗?如果您手动运行第一个脚本,一切正常,但如果您通过 crontab 运行它,那么
lightsoff.sh和lightson.sh脚本不会运行?对吗? -
cron 作业正在运行
python py/hardware_controller.py-- 您确定该作业在py/...可用的正确目录中执行吗?可能最好使用绝对文件名或在脚本开头添加cd <target-directory>命令 -
你错过了最重要的部分,你的 crontab 配置
-
Crontab 需要绝对路径才能执行
-
这就是正在发生的事情。如果我手动触发开和关,它就可以工作。它所在的目录是/home/pi/lightshowpi