您的位置:首页 > 文档 > Shell >
 文章分类 

一个检测show128文件更新的shell脚本


创建:2005-10-26 00:49:44
作者:Unlinux
来自: http://www.Unlinux.com

证券公司的行情系统最重要的是 show128 库,这个库是上交所的行情。一般这个行情文件通过卫星发到证券公司的 Novell 行情服务器上。

Windows 客户端通过映射驱动器的办法取到这个库文件,我在 Windows 上安装 rsync 程序,侦听在 873 端口。在 Linux 上通过 rsync 脚本,不断去同步这个文件。

由于 crontab 的最小更新时间为一分钟,所以,rsync 的脚本采用死循环来实现。

获取 show128 的脚本如下:

while true
do
WEEK=`date +%w`
HOUR=`date +%k`
if [ $WEEK -ge 1 -a $WEEK -le 5 -a $HOUR -ge 8 -a $HOUR -le 16 ]
then
rsync -azv --exclude="GZLX.*" hq::dbf .
fi
done

程序判断每周一到五,每天 8:00 到 16:00 才同步。

运行时,采用 nohup .. & 的方式实现。



同步后需要检测文件的更新情况,我的脚本是这样的:

#!/bin/bash
#检测 show128 的更新速度
count=0
total=0
echo begin:0 >show128_counts.txt
while true
do
p_time=`ls -l SHOW128.DBF --time-style="+%H%M%S"|awk '{print $6}'`
# echo $p_time
sleep 9
c_time=`ls -l SHOW128.DBF --time-style="+%H%M%S"|awk '{print $6}'`
diff=`expr $c_time - $p_time`
if [ $diff -gt 0 ]
then
count=`expr $count + 1`
if [ $diff -gt 40 ]
then
diff=`expr $diff - 40`
fi
total=`expr $total + $diff`
avg=`expr $total / $count`
echo $count:$c_time:[$diff s][avg:$avg s] >> show128_counts.txt
fi
done

脚本采用了 ls 命令的 +FORMAT 格式获取文件的秒。
并用 expr 得到两个时间之间的差,但是在两个时间属于不同分钟的时候,由于百进位和 60 进制的差别,需要减去 40 秒。

本脚本即计算出文件的平均更新时间。

转载自:http://www.unlinux.com/doc/shell/20051026/173.html

评论】 【加入收藏夹】 【 】 【打印】 【关闭
 *  请尊重我们的劳动,转载请注明出自UnLinux.Com及作者名 * 

※ 相关链接
 ·一个杀死终端所有进程的 Shell  (2005-10-26 00:49:44)
 ·一个判断文件日期的问题  (2005-10-26 00:49:44)
 ·一个排序脚本  (2005-10-26 00:49:44)
 ·一个把IP地址转化为长整数的脚本  (2005-10-26 00:49:44)
 ·一个刚刚编写的监控主机是否可以ping通的脚  (2005-10-26 00:49:44)
 ·怎么把一个文本的一列,换成一行  (2005-10-26 00:49:43)
 ·找出一个文件中出现某str的次数  (2005-10-26 00:49:43)
 ·在每个文件夹下建一个.qmail文件  (2005-10-26 00:49:43)
 ·在shell程序中判断一个变量是不是由4个数字组成  (2005-10-26 00:49:43)
 ·如何计算一个日期是星期几  (2005-10-26 00:49:42)

Copyright © 2005 UnLinux.Com All Rights Reserved