Cron-python脚本未执行
我读过一些关于这方面的帖子,但我找不到帮助 我有一个使用smtplib发送邮件的python脚本。它在从命令行调用时工作 我有Cron-python脚本未执行,python,cron,crontab,smtplib,Python,Cron,Crontab,Smtplib,我读过一些关于这方面的帖子,但我找不到帮助 我有一个使用smtplib发送邮件的python脚本。它在从命令行调用时工作 我有#/usr/bin/python作为第一行,可以使用/home/pi/ipsender.py和python/home/pi/ipsender.py运行它 我的crontab是*/1****/home/pi/ipsender.py,但我也尝试过*/1****python/home/pi/ipsender.py和*/1****/usr/bin/python/home/pi/i
#/usr/bin/python
作为第一行,可以使用/home/pi/ipsender.py
和python/home/pi/ipsender.py
运行它
我的crontab是*/1****/home/pi/ipsender.py
,但我也尝试过*/1****python/home/pi/ipsender.py
和*/1****/usr/bin/python/home/pi/ipsender.py
执行我得到的/usr/bin/pyhton
和从命令行运行python,我可以很好地导入和使用smtplib
在/var/log/syslog
中,我得到:
Nov 27 22:57:01 raspberrypi /USR/SBIN/CRON[3764]: (pi) CMD (python /home/pi/ipsender.py)
Nov 27 22:57:01 raspberrypi /USR/SBIN/CRON[3763]: (CRON) info (No MTA installed, discarding output)
我猜没有MTA。。。只是因为Cron没有发送关于它正在做什么的电子邮件,还是不是
如何运行此脚本
[编辑]
脚本的权限为
-rwxr-xr-x 1 pi pi 551 Nov 27 22:37 ipsender.py
[编辑二]
使用D Read的提示,我得到以下日志
starting
Traceback (most recent call last):
File "/home/pi/ipsender.py", line 7, in <module>
ifconfig_output = sp.check_output(["ifconfig", "wwan0"])
File "/usr/lib/python2.7/subprocess.py", line 537, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
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
启动
回溯(最近一次呼叫最后一次):
文件“/home/pi/ipsender.py”,第7行,在
ifconfig\u output=sp.check\u输出([“ifconfig”,“wwan0”])
文件“/usr/lib/python2.7/subprocess.py”,第537行,在check_输出中
进程=Popen(stdout=PIPE,*popenargs,**kwargs)
文件“/usr/lib/python2.7/subprocess.py”,第679行,在__
错误读取,错误写入)
文件“/usr/lib/python2.7/subprocess.py”,第1249行,在执行子进程中
引发子对象异常
OSError:[Errno 2]没有这样的文件或目录
向我暗示这条路有问题。虽然在/etc/crontab
中,我有路径=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
和ifconfig
给出的/sbin/ifconfig
。所以这不应该是个问题,对吧?有很多关于cron的问题。。。如果没有MTA,请以更简单的方式查看输出-尝试将其管道化到文件:
*/1 * * * * /home/pi/ipsender.py > /home/pi/ipsender.log 2>&1
使用打印'starting'
启动python文件,查看python文件是否开始正常执行。尝试保存脚本的STDOUT和STDERR:
*/1 * * * * /home/pi/ipsender.py &> /tmp/ipsender.log
该文件的权限是什么?-rwxr-xr-x 1 pi 551 11月27日22:37 ipsender.py如果您尝试“sudo su”,然后手动运行脚本,它是否有效?您是否在crontab中运行的用户与在shell中尝试的用户相同?确保两种情况下的权限和环境相同。我可以看到脚本失败[Edit2],但我不知道原因。您的脚本是从pi
用户的crontab运行的,该crontab运行在与/etc/crontab
不同的shell中。我认为如果将PATH=
行与脚本放在同一个crontab中,它可能会工作。或者,尝试在脚本中指定ifconfig
的绝对路径。