linux定时任务执行脚本问题

一个Linux脚本,从mysql导出CSV文件,并打成tar包,手工执行的时候,正常打包。但是放进定时任务去执行就会打空包,里面没有数据。

脚本详细代码如下:

#! /bin/bash

PWD=`pwd`
DATA_DIR=/data/gtpdata/ecmpshell
CHANEL_DIR=/data/gtpdata/ECMP_Send
SUC_DIR=/data/gtpdata/ECMP_Send.succ 

# adju‘st for data date terms in days
DAYS=3

# adjust for data date need to export
#DATE_PRE_FIX=20190613

# comment this line if use an assigned date
DATE_PRE_FIX=`date "+%Y%m%d"` 

cd $DATA_DIR

if [ ! -f "./$DATE_PRE_FIX-WIND.tar" ];then

  echo "文件不存在"

  else

  rm ./$DATE_PRE_FIX-WIND.tar

fi


mysql -h 76.236.161.26 -uwind -pebk#1Dcc winddb<<EOF

SELECT a.S_INFO_WINDCODE, a.B_INFO_FULLNAME AS C_FULLNAME, a.B_INFO_ISSUER AS C_ISSUER, a.B_ISSUE_FIRSTISSUE AS D_ISSDATE, 
a.B_INFO_ISSUEPRICE AS F_PRICE, a.B_INFO_PAR F_PAR_VALUE, a.B_INFO_COUPONRATE AS F_FIXRATE, a.B_INFO_CARRYDATE AS D_VDATE, 
a.B_INFO_MATURITYDATE AS D_MDATE, a.B_INFO_TERM_YEAR_, a.B_INFO_TERM_DAY_, a.B_INFO_INTERESTFREQUENCY AS C_INTPMTFREQ, 
a.B_INFO_INTERESTTYPE AS C_RATECODE, a.CRNCY_CODE AS C_CCY, a.S_INFO_NAME AS C_NAME, a.S_INFO_EXCHMARKET AS C_MARKETISSUE, 
a.B_INFO_GUARANTOR AS C_GUARANTEE, a.B_INFO_SPECIALBONDTYPE AS C_TYPE, a.B_INFO_ACTUALBENCHMARK AS c_basis 
FROM cbonddescription a
where STR_TO_DATE(a.B_ISSUE_FIRSTISSUE, '%Y%m%d') > date_sub(now(), interval 7 day)
into outfile '$DATA_DIR/$DATE_PRE_FIX-cbonddescription.csv' 
CHARACTER SET gbk
fields terminated by '^*' 
optionally enclosed by '"';


SELECT a.S_INFO_WINDCODE AS C_SECURITY,a.ANN_DT AS D_VDATE,a.B_INFO_CREDITRATING AS C_CREDIT_RATING,a.B_INFO_CREDITRATINGAGENCY AS C_CUSTOMERNAME,
a.B_INFO_CREDITRATINGEXPLAIN AS C_CRAT_DESC FROM cbondrating  a 
where a.B_RATE_STYLE='1' and STR_TO_DATE(a.ANN_DT, '%Y%m%d') > date_sub(now(), interval 7 day) 
ORDER BY a.S_INFO_WINDCODE,STR_TO_DATE(a.ANN_DT, '%Y%m%d')
into outfile '$DATA_DIR/$DATE_PRE_FIX-cbondrating.csv' 
CHARACTER SET gbk
fields terminated by '^*' 
optionally enclosed by '"';

select t.S_INFO_COMPNAME,t.ANN_DT,t.B_INFO_CREDITRATING,IFNULL(cf.B_INFO_CREDITRATING_NAME,t.B_INFO_CREDITRATINGAGENCY),t.B_INFO_CREDITRATINGEXPLAIN
from cbondissuerrating t 
LEFT JOIN cbondratingdefinition cf on t.B_INFO_CREDITRATINGAGENCY=cf.B_INFO_CREDITRATINGAGENCY
where t.B_RATE_STYLE='1'
and STR_TO_DATE(t.ANN_DT, '%Y%m%d') > date_sub(now(), interval 7 day) 
into outfile '$DATA_DIR/$DATE_PRE_FIX-cbondissuerrating.csv' 
CHARACTER SET gbk
fields terminated by '^*' 
optionally enclosed by '"';

SELECT * FROM (
select t.S_INFO_WINDCODE,t.TRADE_DT,t.B_ANAL_NET_CNBD,B_ANAL_YIELD_CNBD,t.B_ANAL_MODIDURA_CNBD,t.B_ANAL_PRICE_CNBD,t.B_ANAL_ACCRINT_CNBD
from cbondanalysiscnbd1 t
union all
select t.S_INFO_WINDCODE,t.TRADE_DT,t.B_ANAL_NET_CNBD,B_ANAL_YIELD_CNBD,t.B_ANAL_MODIDURA_CNBD,t.B_ANAL_PRICE_CNBD,t.B_ANAL_ACCRINT_CNBD
from cbondanalysiscnbd4 t
union all
select t.S_INFO_WINDCODE,t.TRADE_DT,t.B_ANAL_NET_CNBD,B_ANAL_YIELD_CNBD,t.B_ANAL_MODIDURA_CNBD,t.B_ANAL_PRICE_CNBD,t.B_ANAL_ACCRINT_CNBD
from cbondanalysiscnbd5 t
)a where STR_TO_DATE(a.TRADE_DT, '%Y%m%d') > date_sub(now(), interval 7 day) 
ORDER BY a.S_INFO_WINDCODE,STR_TO_DATE(a.TRADE_DT, '%Y%m%d')
into outfile '$DATA_DIR/$DATE_PRE_FIX-cbondanalysiscnbd.csv' 
CHARACTER SET gbk
fields terminated by '^*' 
optionally enclosed by '"';
echo "quit finish"



quit
EOF


echo "cvf finish"
tar -cvf ./$DATE_PRE_FIX-WIND.tar ./$DATE_PRE_FIX-cbonddescription.csv ./$DATE_PRE_FIX-cbondrating.csv ./$DATE_PRE_FIX-cbondissuerrating.csv ./$DATE_PRE_FIX-cbondanalysiscnbd.csv
echo "toucht finish"
touch ./$DATE_PRE_FIX-READY

echo  "mv finish"
mv ./$DATE_PRE_FIX-READY $CHANEL_DIR
echo "mv finish"
mv ./$DATE_PRE_FIX-WIND.tar $CHANEL_DIR
echo "rm finish"
rm ./$DATE_PRE_FIX-cbonddescription.csv 
rm ./$DATE_PRE_FIX-cbondrating.csv 
rm ./$DATE_PRE_FIX-cbondissuerrating.csv 
rm ./$DATE_PRE_FIX-cbondanalysiscnbd.csv

cd $PWD

echo "exit finish"
exit 1

 

可能是mysql路径找不到,建议写全路径或者在脚本开头声明下mysql安装目录下的bin目录,如 `/data/services/mysql/bin/mysql`,或者在脚本最前面添加 source声明