通过shell脚本实现读取文件新增的每一行并追加到另一台服务器的文件末尾

写个shell或per脚本,以后台进程方式运行,实现下面的功能:
当A服务器/var/A.log文件新增每一行时(从文件末尾读取),读取后logger或其它方式追加到IP为x.x.x.x的服务器上的/var/B.log文件中(B.log是linux系统syslogd进程产生的文件)。

我觉得你这个思路不好,按照你的想法,每增加一条,就需要运行一个往x.x.x.x服务器上发送一次的sh,如果A.log同时写入100,200,300,1000条你想过是什么概念吗?除了浪费了系统资源,还占用了连接带宽。所以实时更新我觉得这个思路不好。我建议按天比如24小时,上传一次a.log。追问

往A.log写入的文本量不太大,如果24小时实时性较差,在B可能收集不到A最实时、关键的一部分log信息,其实从A.log中读取的信息也是有选择性的(用grep),尽管读取新增的每一行,但并不是把所有的都发送到B.log上去。

追答

我先说一下我的思路,这个任务我分成两个部分,首先执行脚本扔到后台,你也可以用while来控制时间检测,不过我还是喜欢用cron来控制任务。假设我cron设置每一分钟执行一次A.sh 通过对比总行数和增加的行数判断文件是否更新(这个总行数最好手动添加,怎么添加你自己随意),如果增加了,就截取增加那部分的行数进行grep,grep后的内容写入/home/file这个文件里,然后上传file到B服务器.B也可以用cron控制,每1分钟检查一下是否有file这个文件,如果有就把内容写到B机的/tmp/file里,然后删除file这个文件。
#总行数
#ELINES=`wc -l /home/file
scp /home/file root@192.168.13.100:/tmp/
fi

#B上的脚本B.sh
FILE=file
if [ -f $FILE ]
then
cat $FILE >> /tmp/file
rm -rf $FILE
fi

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-29
8)脚本 script。sh 内7容如下o: #!。bin。bash while true do echo "一s条信息" >>file。txt sleep 100 done 0)赋予3可执行权限 chmod +x script。sh 5)后台执行脚本 script。shyS蟥yS蟥xa∝タe┯a∝タcwn′m四郅

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网