覆盆子的GPIO命令无法通过crontab工作

时间:2013-01-13 21:05:19

标签: bash raspberry-pi gpio

我有一个Raspberry Pi。我通过命令行在板上安装了WiringPi for pilot GPIO。

我做了一个名为aggiornaora.sh的脚本

gpio -g write 18 1 #it set the GPIO port to 1
#log with reverse append
(echo 'accensione';date;echo ' ') | cat - logstufa.txt > temp && mv temp logstufa.txt

如果我尝试通过sh aggiornaora.sh直接执行此脚本,则此脚本可以正常工作。 但是当cron运行脚本时,它只执行第二个操作。全部具有root权限。 我通过“gpio readall”检查了这个问题。

在您看来可能是什么问题?

2 个答案:

答案 0 :(得分:6)

请注意,当您从crontab执行某些操作时,它不一定会设置相同的环境变量。

最重要的环境。你的变量是PATH。我认为在cron下,您的PATH不包含gpio命令所在的目录。

您可以添加这样的行作为您的crontab的第一行:

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

如果gpio位于上面列出的某个目录中,这应该可以解决您的问题。

调试crontab问题的典型方法是确保env。变量是你期望的变量。将这样的行添加到要调试的脚本的第一行:

set > /path/to/log/file    # be sure that this file is writable

手动运行一次,将日志文件复制到一边。然后,再次从cron运行它,比较输出 - 你会看到是什么让它们与众不同。

答案 1 :(得分:1)

是的,我遇到了同样的问题(在crontab中使用gpio命令)。一个对我有用的快速解决方案是预先添加一个' sudo'到gpio命令,如: sudo gpio写0 1

当我浏览我的bash脚本并为所有gpio命令预先设置了sudo时,一切正常。

mvp建议的前一个答案是“更好”的答案。用crontab修复这些类型问题的方法。希望这有帮助