python不能用tab_Linux crontab中不能执行Python脚本

Linux crontab中不能执行Python脚本

>>摘要

在Linux下的crontab定时执行shell脚本和Python的时候存在一定的问题,导致某些系统变量取不到,以至于定时计划不能很好的执行。究其原因是因为crontab不能取到全部的环境变量

>>依赖环境

[root@i-vowirco9 bin]# cat /etc/redhat-release

CentOS release 6.8 (Final)

[root@i-vowirco9 bin]# python -V

Python 2.6.6

[root@i-vowirco9 bin]# pip -V

pip 9.0.1 from /usr/lib/python2.6/site-packages/pip-9.0.1-py2.6.egg (python 2.6)

>>验证crontab取到的环境变量

全新主机上面编写如下shell脚本测试crontab服务可获取到的环境变量

## 脚本内容

vim /root/bin/test_crontab_env.sh

#!/usr/bin/env bash

#-*- coding: utf-8 -*-

#Author: Colin

#Date: 2017-05-12

#Desc: 测试crontab服务可获取到的环境变量

#

/usr/bin/env > /tmp/colin_env.log

## 赋权限

chmod a+x /root/bin/test_crontab_env.sh

配置crontab定制执行

## 配置crontab

crontab -e

*/2 * * * * /root/bin/test_crontab_env.sh

两分钟之后查看/tmp/colin_env.log日志

[root@i-vowirco9 bin]# cat /tmp/colin_env.log

SHELL=/bin/sh

USER=root

PATH=/usr/bin:/bin

_=/usr/bin/env

PWD=/root

LANG=en_US.utf8

HOME=/root

SHLVL=2

LOGNAME=root

LC_CTYPE=en_US.utf8

从上面的结果可以看到,crontab运行环境中取到的系统环境变量少之又少

>>解决之道

>>>用Shell执行Python脚本

示例如下:

## 配置所需系统变量

[root@i-vowirco9 bin]# tail -2 /etc/profile

## add for test

export COLINNAME='Colin'

## 测试脚本

vim /root/bin/get_crontab_variable.sh

#!/usr/bin/env bash

#-*- coding: utf-8 -*-

#Author: Colin

#Date: 2017-05-12

#Desc: 测试crontab服务获取指定的变量

#

## 关键所在

source /etc/profile

echo "The given variable is: ${COLINNAME}" > /tmp/colin_env_profile.log

## 执行脚本

crontab 配置执行脚本,观察输出日志内容

cat /tmp/colin_env_profile.log

The given variable is: Colin

## 备注

如果注释小 source 所在行,执行脚本,则获取不到COLINNAME变量值

cat /tmp/colin_env_profile.log

The given variable is:

>>>crontab 配置所需变量

示例如下:

## 在crontab中直接配置变量 如下

[root@i-vowirco9 bin]# crontab -l |head -1

COLINNAME='Colin'

## 测试脚本 /root/bin/get_crontab_variable_v2.sh 只有一行内容,注意没有source那行

[root@i-vowirco9 bin]# cat get_crontab_variable_v2.sh

#!/usr/bin/env bash

#-*- coding: utf-8 -*-

#Author: Colin

#Date: 2017-05-12

#Desc: 测试crontab服务获取指定的变量

#

echo "The given variable is: ${COLINNAME}" > /tmp/colin_env_crontab.log

## 执行脚本

crontab 配置执行脚本,观察输出日志内容

cat /tmp/colin_env_crontab.log

The given variable is: Colin

----------------------------------------------更多精彩请关注-------------------------------------

a67dd7a53e91

公众号: DailyJobOps

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值