grep每X分钟记录最后X分钟的日志

grep每X分钟记录最后X分钟的日志,grep,Grep,我希望每X分钟对最后X分钟的日志进行一次grep(例如:每5分钟对最后5分钟的日志进行一次grep),而不对任何旧的日志进行grep。最简单的方法是什么?Ruby 1.9.3解决方案 您需要的第二部分,我尚未测试:( 注意:如果您知道“ruby”的位置,请更改shebang(脚本的第一行), 出于安全原因 #! /usr/bin/env ruby require 'date' require 'pathname' if ARGV.length != 4 $stderr.pri

我希望每X分钟对最后X分钟的日志进行一次grep(例如:每5分钟对最后5分钟的日志进行一次grep),而不对任何旧的日志进行grep。最简单的方法是什么?

Ruby 1.9.3解决方案 您需要的第二部分,我尚未测试:(

注意:如果您知道“ruby”的位置,请更改shebang(脚本的第一行), 出于安全原因

#! /usr/bin/env ruby

require 'date'
require 'pathname'

if ARGV.length != 4
        $stderr.print "usage: #{$0} -d|-h|-m|-s time expression log_file\n"
        exit 1
end
begin
        total_amount = Integer ARGV[1]
rescue ArgumentError
        $stderr.print "error: parameter 'time' must be an Integer\n"
        $stderr.print "usage: #{$0} -d|-h|-m|-s time expression log_file\n"
end

if ARGV[0] == "-m"
        gap = Rational(60, 86400)
        time_str = "%b %d %H:%M"
        until_next_search = total_amount * 60
elsif ARGV[0] == "-s"
        gap = Rational(1, 86400)
        time_str = "%b %d %H:%M:%S"
        until_next_search = total_amount 
elsif ARGV[0] == "-h"
        gap = Rational(3600, 86400)
        time_str = "%b %d %H"
        until_next_search = total_amount * 3600
elsif ARGV[0] == "-d"
        time_str = "%b %d"
        gap = 1
        until_next_search = total_amount * 86400
else
        $stderr.print "usage: #{$0} -d|-h|-m|-s time expression log_file\n"
        exit 1
end

pn = Pathname.new(ARGV[3])
if pn.exist?
        log = (pn.directory?) ? ARGV[3] + "/*" : ARGV[3]
else
        $stderr.print "error: file '" << ARGV[3] << "' does not exist\n"
        $stderr.print "usage: #{$0} -d|-h|-m|-s time expression log_file\n"
end

search_str = ARGV[2]
now = DateTime.now

while true
        total_amount.times do
                now -= gap
                system "cat " << log << " | grep '" << now.strftime(time_str) << ".*" << search_str << "'"
        end
        sleep until_next_search
end
!/usr/bin/env ruby
需要“日期”
需要“路径名”
如果ARGV.length!=4
$stderr.print“用法:#{$0}-d |-h |-m |-s时间表达式日志文件\n”
出口1
结束
开始
总金额=整数ARGV[1]
挽救错误
$stderr.print“错误:参数'time'必须是整数\n”
$stderr.print“用法:#{$0}-d |-h |-m |-s时间表达式日志文件\n”
结束
如果ARGV[0]=“-m”
差距=合理(6086400)
time_str=“%b%d%H:%M”
直到下一次搜索=总金额*60
elsif ARGV[0]=“s”
差距=合理(186400)
time_str=“%b%d%H:%M:%S”
直到下一次搜索=总金额
elsif ARGV[0]=“-h”
差距=合理(360086400)
time_str=“%b%d%H”
直到下一次搜索=总金额*3600
elsif ARGV[0]=“d”
time_str=“%b%d”
差距=1
直到下一次搜索=总金额*86400
其他的
$stderr.print“用法:#{$0}-d |-h |-m |-s时间表达式日志文件\n”
出口1
结束
pn=路径名。新建(ARGV[3])
是否存在pn?
log=(pn.directory?)?ARGV[3]+“/*”:ARGV[3]
其他的

$stderr.print“error:file'”发布日志的某些部分,以便我们查看日期格式。同时发布您尝试过的内容。查看以下内容: