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