无法从Cron运行Python

时间:2014-02-09 22:04:24

标签: python cron subprocess raspberry-pi

我有一个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'])

1 个答案:

答案 0 :(得分:4)

这是因为cron有自己的PATH变量,并且不使用与您相同的路径。
出于这个原因,建议您调用您使用的任何程序(特别是通过python的subprocess),并使用可执行文件的绝对路径

您可以在命令行上which modprobe查找modprobe所在的位置(可能位于/bin/),然后将您的通话更改为subprocess.pysubprocess.call(['/bin/modprobe', 'w1-gpio'])