cron 作业未运行 - root 运行正常

cron 作业未运行 - root 运行正常

我有一个刚刚创建的脚本,它在 root 下运行良好。我添加了一个 cron 作业,但它运行不正常

命令是:

gpio -g mode 17 input
getval="$(gpio read 17)"
todayis=$(date) 
getstatus=$getval 
if [ "$getstatus" = "0"  ]; then 
power="Power ON"
else
power="Power OFF"
echo $todayis $power $getstatus >> /var/www/turnmeon.log

以 root 身份运行时的日志文件:

Wed Nov 8 21:11:41 UTC 2017 Power ON 0

作为 crontab 运行时的日志文件:

Wed Nov 8 21:11:41 UTC 2017 Power OFF

如果 OFF 确实为 true,那么末尾不会有 1,就像我所期望的那样。

为什么它会在 bash 提示符下运行而不是作为 crontab 作业运行

*/2 * * * * bash /myscript.sh

答案1

听起来这是一个权限问题。您可能正在以桌面用户身份编辑 crontab,这意味着任务将在桌面用户下运行。如果任务需要 root,则需要以 root 身份编辑 crontab

答案2

可能的原因是cron 中gpio没有PATH可用的内容。指定gpio命令的完整路径,例如

getval="$(/sbin/gpio read 17)"

使用 找出它在您系统上的位置which gpio

我之前就被这个困扰了,因为我经常修改嵌入式解决方案。如果脚本更复杂,我通常会在开头附近初始化 PATH 和 LD_LIBRARY_PATH 以使事情变得更容易。

相关内容