主要问题:北京赛+车程序出+售 1446595067 haozbbs.com
第一:手动执行.sh文件是没有问题的,而定时任务执行.sh文件则提示没有连接到数据库。
处理方法:
在脚本最前面加上一句:
source ~/.bash_profile
这样运行环境就一摸一样了。加上这句后,直接执行能成功的脚本放在crontab里都能执行。
第二:导出的数据乱码,excel2003版本太低,打不开cvs格式的文件。
第三:第三个问题:未获取到当前时间(下面有详细解释)
一、运行crontab –e 编写一条定时任务 */5 * * * * /home/test.sh 在每5分钟执行一次test.sh脚本。
二、查询当前用户定时任务或删除当前用户定时任务。
1获取当前日期
第一种:声明变量
DATE=`date "+%Y%m%d"`
上面两点是数字1左边的。加号要紧贴着右边,否则无效。
引用:touch_${DATE}.txt
第二种:直接使用日期
touch `date +%Y%m%d`.txt
三、直接上命令
1首先要有一个启动的shell,它是用来让定时任务去调用的,并且记录日志输出日志。executeShell.sh代码如下:
#!/bin/bash
DATE=`date +%Y%m%d`
SHELL_NAME="shell.sh"
echo "begin $SHLL_NAME---"`date`"---" >> /home/db2inst1/metadata_backup/$DATE.log
shell_dir="/home/db2inst1/"
cd $shell_dir
sh $SHELL_NAME >> /home/db2inst1/metadata_backup/$DATE.log
#db2 connect to standard user metadata using metadata
2shell.sh这个shell是要操作数据库的关键的脚本:
#!/bin/sh
source ~/.bash_profile
date=`date +%Y%m%d`
rm -rf /home/db2inst1/metadata_backup/${date}
cd /home/db2inst1/metadata_backup/
mkdir /home/db2inst1/metadata_backup/${date}
cd /home/db2inst1/metadata_backup/${date}/
echo "开始执行脚本"
if(db2 connect to 数据库名 user 用户名 using 密码 > /dev/null)
then
echo "[info]db2连接成功"
db2 export to AAB01.ixf of ixf 'select * from AAB01'
#########################################################
db2 export to AAB01.csv of del 'select * from AAB01'
else
echo "[info]db2连接失败"
exit 1
fi
if(db2 connect reset > /dev/null)
then
echo "[info]db2连接断开成功"
else
echo "[info]db2连接断开失败"
fi
#cd /home/db2inst1/metadata_backup/
#tar -zcvf ${date}.tgz /home/db2inst1/metadata_backup/${date}/
#rm -rf /home/db2inst1/metadata_backup/${date}
四、成果图
参考:
https://www.linuxidc.com/linux/2018-11/155189.htm
https://blog.csdn.net/qq_28538407/article/details/81130737
https://blog.csdn.net/alibo2008/article/details/7588046
---------------------
作者:Gordan_
来源:CSDN
原文:https://blog.csdn.net/qq_36501591/article/details/86497280
版权声明:本文为博主原创文章,转载请附上博文链接!