+ -
当前位置:首页 → 问答吧 → shell脚本运行出错

shell脚本运行出错

时间:2011-07-07

来源:互联网

我做mysql数据库备份,发现了一个很诡异的事情,写了脚本,手动运行可以的,但是假如crontab之后运行,发现到压缩(tar)的时候就出错了,这是为什么呢?以下附脚本:
test -d $BACKUP/$NOW || mkdir $BACKUP/$NOW
DBS="spp_vbb"
for db in $DBS
do
### Create dir for each databases, backup tables in individual files ###
  test -d $BACKUP/$db-$NOW && rm -fr $BACKUP/$db-$NOW
  mkdir $BACKUP/$db-$NOW
  echo "####################$db####################" >> $LOGFILE
  for i in `echo "show tables" | $MYSQL -u $MUSER -h $MHOST -p$MPASS $db | grep -v Tables_in_`
  do
  # FILE=$BACKUP/$NOW/$db/$i.sql.gz
  echo $i
  $BACKSCRIPT $db $i --result-file=$BACKUP/$db-$NOW/$i.sql 2>> $LOGFILE
  #MDATE=`date +%m`
  done
  cd $BACKUP/
  $TAR -zvcf $db-$NOW.tar.gz $db-$NOW 2>> $LOGFILE #此处就会出错,我在目录下找不到tar包,可以找到spp_vbb-20110707的目录
  $CHMOD 0777 $db-$NOW.tar.gz
  if [ $? -eq 0 ]; then
  rm -fr $db-$NOW
  fi
  echo "$DATENOW DATABASE $db AS $db-$NOW.tar.gz" >> $LOGFILE
  mv $db-$NOW.tar.gz $NOW/
done
echo "$DATENOW DATABASE AS $NOW.tar.gz ok" >> $LOGFILE
exit 0

作者: salley_2010   发布时间: 2011-07-07

执行的时候把输出信息定向一下,看看
your.sh 1>/tmp/1.out 2>/tmp/2.out

作者: justkk   发布时间: 2011-07-07

引用楼主 salley_2010 的回复:
我做mysql数据库备份,发现了一个很诡异的事情,写了脚本,手动运行可以的,但是假如crontab之后运行,发现到压缩(tar)的时候就出错了,这是为什么呢?以下附脚本:
test -d $BACKUP/$NOW || mkdir $BACKUP/$NOW
DBS="spp_vbb"
for db in $DBS
do
### Create dir for each databases……


我手动执行是正确的。可以得到结果,就是加入到crontab中了之后会不执行tar

作者: salley_2010   发布时间: 2011-07-07