2

我有一个树莓派。我已经通过命令行在板上安装了 WiringPi 用于引导 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”检查了这个问题。

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

4

2 回答 2

7

请注意,当您从 执行某些内容时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 再次运行它,比较输出 - 你会看到是什么让它们不同。

于 2013-01-13T21:22:58.613 回答
1

是的,我遇到了同样的问题(在 crontab 中使用 gpio 命令)。一个对我有用的快速解决方法是在 gpio 命令前添加一个“sudo”,例如:sudo gpio write 0 1

当我浏览我的 bash 脚本并将 'sudo's 添加到我所有的 gpio 命令时,一切正常。

mvp 建议的先前答案是使用 crontab 解决这些类型问题的“更好”方法。希望这可以帮助

于 2014-11-20T18:54:39.130 回答