Crontab Python脚本没有运行

问题描述:

我知道这个问题之前已经被问过,但是我仍然无法使它工作。我的crontab文件只是有这样的:Crontab Python脚本没有运行

0 5 * * * /home/harry/my_env/bin/python /home/harry/compile_stats/process_tonight.py 

这里是我的process_tonight.py是什么样子:

import datetime 
import sys 
sys.path.append('/home/harry/compile_stats/') 
import compile # Module in above path 

print("Processing last night\n") 

date = str(datetime.datetime.today().year) + "-" + str(datetime.datetime.today().month) + "-" + str(datetime.datetime.today().day-1) 

compile.process(date, date) 

这个文件工作完全正常,当我刚刚从经常在命令行中运行它,但不工作当我安排它。

我也看了看我的/ var/log/syslog文件,我正在运行的任务没有显示在那里。

任何想法?

编辑: 它被设置为在我的例子(5 A.M)运行的时间仅仅是放在一个随机时间它没有运行任何时候我摆在那里。

编辑2#:

由于每个用户speedyturkey我简化我的Python脚本,以便更好地诊断问题:

import datetime 
#import sys 
#sys.path.append('/home/harry/compile_stats/') 
#import compile # Module in above path 

print("Processing last night\n") 

date = str(datetime.datetime.today().year) + "-" + str(datetime.datetime.today().month) + "-" + str(datetime.datetime.today().day-1) 

#compile.process(date, date) 

什么也没有发生,所以我想这个问题是不是与进口。

+1

你使用哪个crontab文件?是/ etc/crontab,/etc/cron.d/somthng,/etc/cron.hourly,/ var/spool/cron/username?你是如何在那里添加线的?用哪个命令?或者只是通过编辑? –

+0

@SergeyVasilyev我使用“crontab -e”打开它,我只是在那里添加它(如果重要的话使用vim)。键入“crontab -l”显示我添加的内容 – Hobbit36

+1

可能很明显,但这会使其每天早上5点运行。你是否等了整整24小时才确定系统时间不仅仅是怪异的或者其他的? – Xorgon

根据评论,我相信问题在于你如何调用crontab中的python脚本。运行你给出crontab的确切命令,并修复它返回的任何问题。

+0

对不起,那不是。我跑了确切的命令,它工作得很好。 – Hobbit36

+0

你是否从冷登录中运行它?没有先前的环境设置等? – Xorgon

+0

刚刚从冷登录(并没有设置)运行它。工作正常 – Hobbit36

,而不是试图从你的Python脚本修改的路径,你可以这样做:

cd /home/harry/compile_stats/ && ./process_tonight.py

这将使它更容易import compile正确。请注意,这也需要制作process_tonight.py可执行文件(chmod +x process_tonight.py)并添加一个指向Python解释器的指针(我猜...#!/ home/harry/my_env/bin/python)。

编辑回应上述编辑#2: 实际上无法确定它是否从您编写的代码运行 - 打印语句未被重定向。我建议更改代码以执行某种可以检查的副作用。例如,导入子,然后做(例如):

subprocess.call("date > /home/harry/compile_stats/date.txt")

如果脚本正确执行,它会的date输出重定向到指定的文件。

+0

你也可能希望简化你的Python脚本,直到你解决你的cron问题为止......很难说你的Python脚本根本没有被调用,或者被调用并失败(可能是由于进口问题)。 – speedyturkey

+0

检查我最近的编辑。我简化了它,它仍然没有运行。猜猜这不是导入 – Hobbit36

+0

我在回复中添加了一个编辑到我的答案。这是一个棘手的诊断,但我觉得你越来越近! – speedyturkey

好吧,我能得到它通过创建特定的cron文件,把信息和那里,在加载它的工作。

所以process_tonight。cron的包含此:

0 5 * * * /home/harry/my_env/bin/python /home/harry/compile_stats/process_tonight.py 

而我只是装成的crontab:

crontab process_tonight.cron 

真的不知道为什么这个工程及其他方式不中(可能某人有一个想法)。