首页 linux 应用正文

crontab环境变量导致脚本运行错误

helight0 linux 应用 2013-04-15 49 0 xgcomglibc

1.缺少LANG的ls取值错误 程序: yestoday=`date +%Y%m%d -d-1day` ytoday=`date +%F -d-1day` pathroot="/data5/tt_chat/" filelist=`ls $pathroot/data/ -l|grep $ytoday|awk '{print $8}'` echo $filelist 按时间过滤过滤出昨天一天生成的文件,让后再做处理,本地测试执行,没有问题,加入crontab执行总是没有数据文件过滤出来,但是自己再本地执行,就可以了 ++ date +%Y%m%d -d-1day + yestoday=20130414 ++ date +%F -d-1day + ytoday=2013-04-14 + pathroot=/data5/tt_chat/ ++ grep 2013-04-14 ++ awk '{print $8}' ++ ls /data5/tt_chat//data/ -l + filelist= + echo 看到输出是空的,为什么呢? 在本地ls看内容的结果是: -rw-r--r-- 1 root root 4806765 2013-04-15 11:35 xurl.1365996810.txt -rw-r--r-- 1 root root 4785242 2013-04-15 12:36 xurl.1366000462.txt 而crontab中输出的内容是: -rw-r--r-- 1 root root 12936889 Apr 4 19:40 xurl.1365075440.txt -rw-r--r-- 1 root root 10636839 Apr 4 20:43 xurl.1365079171.txt 在crotab中输出的env的值发现少的可怜啊 +env='SHELL=/bin/sh USER=xspider PATH=/usr/bin:/bin PWD=/data5/tt_chat/script HOME=/home/xspider SHLVL=2 LOGNAME=xspider _=/usr/bin/env' SHELL=/bin/sh USER=webspider PATH=/usr/bin:/bin PWD=/data5/tt_chat/script HOME=/home/xspider SHLVL=2 LOGNAME=xspider _=/usr/bin/env 加入字符客户端字符集之后crontab的结果 #. /etc/profile LANG=en_US.UTF-8 export LANG -rw-r--r-- 1 root root 4806765 2013-04-15 11:35 sosourl.1365996810.txt -rw-r--r-- 1 root root 4785242 2013-04-15 12:36 sosourl.1366000462.txt -rw-r--r-- 1 root root 5591872 2013-04-15 13:37 sosourl.1366004119.txt' 结果正常了,当然这是知道其原因是字符集没有设置,如果不知道怎么办?直接在shell开始出执行. /etc/profile 进行环境变量设置这样更保险

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论