免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1524 | 回复: 6
打印 上一主题 下一主题

问个crontab的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-04 22:08 |只看该作者 |倒序浏览
while [ $C -lt $Count ]
这句手动执行的时候没问题
为什么CRONTAB里执行的时候报错呢?
/db2table_autocheck/./commercetable.sh: line 10: [: ::::::::::::::: integer expression expected
第10行就是while [ $C -lt $Count ]句

论坛徽章:
0
2 [报告]
发表于 2006-11-04 22:11 |只看该作者
C开始是0 而 Count 是取出来的行数
循环一次C+1
手动执行的时候都没问题~~~

论坛徽章:
0
3 [报告]
发表于 2006-11-05 19:42 |只看该作者
帖脚本和手工执行例子来看看

论坛徽章:
0
4 [报告]
发表于 2006-11-06 09:27 |只看该作者
Database Connection Information

Database server        = DB2/LINUX 8.2.5
SQL authorization ID   = ODS
Local database alias   = ODS

/db2table_autocheck/./odstable.sh: line 10: [: ::::::::::::::: integer expression expected
这个是出错信息
手动执行的时候就能过
Database Connection Information

Database server        = DB2/LINUX 8.2.5
SQL authorization ID   = ODS
Local database alias   = ODS
我的脚本是这样的
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATHHOME/bin

export PATH
unset USERNAME
su - ods -c "/db2table_autocheck/./odstable.sh"
cp -r /db2table_autocheck/.log/* /mnt/testdb/tablecheck/
cp -r /db2table_autocheck/.log/* /db2table_autocheck/log/
rm -rf /db2table_autocheck/.log/*

odstable.sh如下
datename=`date +_%y_%b_%d_%H_%M`
mkdir /db2table_autocheck/.log/ods$datename
db2 connect to ods
db2 list tablespaces show detail |grep Total > /db2table_autocheck/Total
db2 list tablespaces show detail |grep Used > /db2table_autocheck/Used
db2 list tablespaces show detail |grep Name > /db2table_autocheck/Name
db2 list tablespaces show detail |grep Total -c > /db2table_autocheck/count
Count=`more /db2table_autocheck/count`
C=0
while [ $C -lt $Count ]
do
   C=$[C+1]
   T=`more /db2table_autocheck/Total |awk '{print $4}'`
   t=`echo $T |awk '{print $" '$C' "}'`
   U=`more /db2table_autocheck/Used |awk '{print $4}'`
   u=`echo $U |awk '{print $" '$C' "}'`
   N=`more /db2table_autocheck/Name |awk '{print $3}'`
   n=`echo $N |awk '{print $" '$C' "}'`
   p=$[u*100/t]
   if [ 50 -lt $p ]
       then
         if [ 100 -lt $t ]
            then
                 echo $n used tablespace is $p% Total=$t Used=$u > /db2table_autocheck/.log/ods$datename/$n$datename
         fi
   fi
done
rm /db2table_autocheck/Total
rm /db2table_autocheck/Used
rm /db2table_autocheck/Name
rm /db2table_autocheck/count
cd /db2table_autocheck/.log/ods$datename/
if [ $(ls -A|wc -w) = 0 ]
   then rm -rf /db2table_autocheck/.log/ods$datename
fi

论坛徽章:
0
5 [报告]
发表于 2006-11-06 19:07 |只看该作者
顶上去,有没高手知道的???

论坛徽章:
0
6 [报告]
发表于 2006-11-06 21:30 |只看该作者
你把 while [ $C -lt $Count ]
改成 while [ "$C" -lt "$Count" ] 看看.

或是在 while 前多加一行 echo "$C : $Count"

然后在 crontab -e 内把 stdout 跟 stderr 导出来看一下
* * * * * /path/yourshell > /tmp/trace.out 2>/tmp/trace.err

看看是不是 Count 没取到值.

嘿嘿少打个字就被抓包了.. = ="

[ 本帖最后由 vantien 于 2006-11-7 15:15 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-11-07 11:37 |只看该作者
"$Count"
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP