bash 下如何实现 perl 中 seek 的功能?
因为日志处理需要,接触到 perl,虽然还未入门,但通过几个函数就可以发现其在文本处理上的威力确实名不虚传,更不用提正则表达式了。
假设有这样的应用场景:客户通过 ftp 客户端上传文件到接入端 ftp 服务器,接入端 ftp 服务器作为分布式存储系统的客户端,再将这些文件存入到后面的分布式存储服务器中。这个接入端 ftp 服务器要做的工作就是定时分析 ftp server(假设是 vsftpd,日志为 xferlog)的日志来获取客户上传的文件,再对这些文件做后续处理。客户上传时随时进行的,xferlog 的记录条数也随之增长。
perl 中通过 seek 函数可以很方便的做到,每一次脚本执行时,都将上一次脚本执行时 xferlog 的大小作为本次读操作的偏移量,用这个偏移量来调用 seek,本次处理完后再将该偏移量更新后存入到一个文件供下次脚本执行时读取。