我有一个python脚本,它将读取Raspberry-Pi的GPIO引脚上探针的温度,并将该温度附加到日志文件中。使用sudo权限运行脚本表单终端可以正常工作:
sudo python /home/pi/temp.py
我试图每隔15分钟从sudo的crontab文件中运行脚本:
*/15 * * * * python /home/pi/temp.py
此操作失败,输出为
Traceback (most recent call last):
File "/home/pi/temp.py", line 8, in <module>
subprocess.call(['modprobe', 'w1-gpio'])
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
我知道问题出在modprobe子进程调用上,但我无法确定究竟是什么。在我的脚本中,我有以下与此问题相关的代码:
import subprocess
subprocess.call(['modprobe', 'w1-gpio'])
subprocess.call(['modprobe', 'w1-therm'])
答案 0 :(得分:4)
这是因为cron
有自己的PATH
变量,并且不使用与您相同的路径。
出于这个原因,建议您调用您使用的任何程序(特别是通过python的subprocess
),并使用可执行文件的绝对路径
您可以在命令行上which modprobe
查找modprobe
所在的位置(可能位于/bin/
),然后将您的通话更改为subprocess.py
至subprocess.call(['/bin/modprobe', 'w1-gpio'])