在Raspberry Pi 2中通过cron执行包含GPIO命令的python脚本 环境 树莓皮2 拉斯宾·杰西·利特 Windows 8.1 油灰0.66(SSH) 问题

在Raspberry Pi 2中通过cron执行包含GPIO命令的python脚本 环境 树莓皮2 拉斯宾·杰西·利特 Windows 8.1 油灰0.66(SSH) 问题,python,linux,cron,raspberry-pi2,gpio,Python,Linux,Cron,Raspberry Pi2,Gpio,无法让cron使用sudo执行python脚本。该脚本处理GPIO输入,因此应该使用sudo调用它。该程序应该将温度和湿度保存到文件中,但cat temp.txt和cat湿润.txt给了我空字符串 克朗塔布 sudo crontab-e * * * * * python /home/dixhom/Adafruit_Python_DHT/examples/temphumid.py 1>>/tmp/cronoutput.log 2>>/tmp/cronerror.log p

无法让cron使用sudo执行python脚本。该脚本处理GPIO输入,因此应该使用sudo调用它。该程序应该将温度和湿度保存到文件中,但
cat temp.txt
cat湿润.txt
给了我空字符串

克朗塔布
sudo crontab-e

* * * * * python /home/dixhom/Adafruit_Python_DHT/examples/temphumid.py 1>>/tmp/cronoutput.log 2>>/tmp/cronerror.log
python脚本 cronerror.log和cronoutput.log (空)

我试过的
  • sudo crontab-e
  • cron中的
    /usr/bin/python
  • chkconfig cron
    (cron打开)
  • sudo-apt-get-update
    sudo-apt-get-update
  • sudo重启

任何帮助都将不胜感激。谢谢。

选项1:您可以编辑
/etc/crontab
。在那里,您可以在计划之后的列中指定哪个用户应执行相应的作业

选项2:使用

sudo su
crontab -e
我会选择第二种选择,因为这是他们建议的


(免责声明:没有关于GPIO内容的担保。我只是假设您对“需要sudo”的看法是正确的,因为我从来没有在raspi上执行GPIO。因此,我只将运行脚本称为root。)

问题在于相对路径。数据被保存到一个不同于我所看到的地方

改变

f = open("humid.txt","w")


解决问题。

谢谢。但是我尝试了这些,问题仍然存在。我假设脚本在交互调用时工作并产生输出。当它现在以root运行时,我认为它也将以root的主目录作为工作目录运行。由于脚本使用相对路径,您的文件将放置在那里…没错。。。关键是相对路径。我找不到根目录,所以我修复了程序,将数据保存到绝对路径,结果成功了!谢谢,我的荣幸。在这种情况下,请随意接受答案;)
f = open("humid.txt","w")
f = open("/home/dixhom/Adafruit_Python_DHT/examples/humid.txt","w")