Crontab不会执行python

时间:2018-01-16 01:34:16

标签: python linux cron centos7

提前感谢您查看我的问题社区,

我的python测试脚本不会从我的Centos 7 Crontab执行。如果在包含目录中调用此脚本,或者从具有完整路径的根/任何其他目录调用,则此脚本将手动执行。我的Centos Python位置是/bin/python。这包含在我的python脚本的顶部。

Crontab本身似乎工作正常:

* * * * * root date >> /home/test.log

将输出重定向到test.log而不会出现问题。

请找到我的Crontab和测试脚本。

/ etc / crontab中的Crontab

SHELL=/bin/bash
#PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root


* * * * * root python /scripts/test1.py

至于/scripts/test1.py中的python脚本:

#!/bin/python
import os
os.system('date >> testlog.txt')

您可以提供的任何意见/建议我将非常感谢。 谢谢你,

2 个答案:

答案 0 :(得分:0)

cron创建的环境通常远不及shell中发现的环境。为此,您最好将完整的路径信息放在命令本身中(以便不依赖于全局crontab设置)。

此外,工作目录也可能不是您所期望的,因此最好在Python脚本中完全指定文件路径,或者最好是将所有控制信息放在一个地方,确保它已设置好在crontab条目中。

* * * * * ( cd /tmp ; root /bin/python /scripts/test1.py )

答案 1 :(得分:0)

一种方法是从shell脚本触发python脚本。在shell脚本中,在调用python脚本之前导出PATH变量:

python_trigger.sh

export PATH=/sbin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin ...python -u <your script>...

并配置您通常使用cron执行的shell脚本。