繁体   English   中英

Crontab使用不正确的Python版本来运行脚本

[英]Crontab using incorrect version of Python to run script

crontab使用2.6版来运行需要2.7才能运行的脚本。 如何将Python的默认版本永久设置为2.7? 运行./file.py工作正常,它正好通过crontab运行

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
*,30 *  *  *  * root /root/file.py >>/tmp/log.txt 2>&1

编辑问题已解决

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

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
*,30 *  *  *  * root /usr/local/bin/python2.7 /root/file.py >>/tmp/log.txt 2>&1

如果您为2.7安装了单独版本的python,可以使用whereis python查找它

我有CentOS 6,它默认带有2.6,所以这个命令返回:

python2: /usr/bin/python2.6 /usr/bin/python2.6-config /usr/bin/python2 /usr/lib/python2.6 /usr/lib64/python2.6 /usr/local/bin/python2.7-config /usr/local/bin/python2.7 /usr/local/lib/python2.7 /usr/include/python2.6

其中/usr/local/bin/python2.7是我感兴趣的,所以当我在crontab中放一份工作时,我明确选择它:

30 00 * * * /usr/local/bin/python2.7 /home/mike/job.py

更新Python脚本的shebang以显式使用Python 2.7:

#!/usr/bin/env python2.7

第一行告诉Unix使用哪个解释器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM