我有几个类似的命令:
ping -i 60 8.8.8.8 | while read pong; do echo "$(date): $pong" >> /security/latencytracking/pingcapturetest2.txt;
已完成
输出:
Tue Feb 4 15:13:39 EST 2014:64字节来自8.8.8.8:icmp_seq = 0 ttl = 50 时间= 88.844毫秒
然后我使用以下方法搜索结果:
cat /security/latencytracking/pingcapturetest* | egrep 'time=........ ms|time=......... ms'
我正在寻找超过X
毫秒的延迟异常。
有没有办法比我正在进行更好的搜索并搜索过去的1,2,3等小时,而不是从文件的开头搜索?随着时间的推移,这可能变得乏味。
答案 0 :(得分:1)
您可以将unix timestamp添加到日志中,然后根据以下内容进行搜索:
ping -i 60 8.8.8.8 | while read pong; do
echo "$(date +"%s"): $pong" >> log.txt
done
您的日志将包含以下条目:
1391548048: 64 bytes from 8.8.8.8: icmp_req=1 ttl=47 time=20.0 ms
然后使用date
和awk
的组合进行搜索:
使用GNU Date(Linux等):
awk -F: "\$1 > $(date -d '1 hour ago' +'%s')" log.txt
或BSD Date(Mac OSX,BSD)
awk -F: "\$1 > $(date -j -v '-1H' +%s)" log.txt
该命令使用date -d
将英语时间句子(或date -v
转换为BSD / OSX上的相同任务)转换为unix时间戳。 awk
然后将记录的时间戳(:
之前的第一个字段)与生成的时间戳进行比较,并打印所有具有更高值的日志行,即更新。
答案 1 :(得分:0)
如果你熟悉R: 1.我用read.table()啜饮整个事情,删除不必要的列 2.然后做你喜欢的任何计算 除非你有数千万条记录,否则R可能会有点慢。
B计划: 1.使用cut来核实你不需要的东西,然后转到上面的计划。
答案 2 :(得分:0)
你也可以用bash来做。您可以按如下方式比较日期:
裁剪日期字段。您可以将该日期转换为自1970年1月1日午夜以来的秒数
date -d "Tue Feb 4 15:13:39 EST 2014" '+%s'
你将这个数字与一小时前得到的秒数进行比较,
reference=$(date --date='-1 hour' '+%s')
这样您就可以获得上一小时的所有记录。然后你可以在延迟时间后过滤