第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

基于日期范圍篩選日志文件條目

基于日期范圍篩選日志文件條目

九州編程 2019-07-01 10:08:24
基于日期范圍篩選日志文件條目我的服務(wù)器擁有異常高的CPU使用率,我可以看到Apache使用的內(nèi)存太多了。我有種感覺(jué),我正被一個(gè)IP所迷惑-也許你能幫我找到他?我使用了下面的一行,以找到10個(gè)最“活躍”的IP:cat access.log | awk '{print $1}' |sort  |uniq -c |sort -n |tail前5個(gè)IP對(duì)服務(wù)器的請(qǐng)求大約是“平均”用戶的200倍。然而,我不知道這5是非常頻繁的訪客,還是他們攻擊服務(wù)器。是否有辦法,指定上述搜索的時(shí)間間隔,例如。最近兩個(gè)小時(shí)還是今天10點(diǎn)到12點(diǎn)之間?干杯!2011年10月23日更新-我需要的命令:在最后X小時(shí)內(nèi)獲取條目(在這里)awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print Date FS $4}' access.log在最后的X小時(shí)內(nèi)獲得大多數(shù)活躍的IP(這里有兩個(gè)小時(shí))awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print $1}' access.log | sort  |uniq -c |sort -n | tail在相對(duì)時(shí)間范圍內(nèi)獲取條目awk -vDate=`date -d'now-4 hours' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print Date FS Date2 FS $4}' access.log在絕對(duì)時(shí)間范圍內(nèi)獲取條目awk -vDate=`date -d '13:20' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'13:30' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print $0}' access.log在絕對(duì)時(shí)間內(nèi)獲取最活躍的IPawk -vDate=`date -d '13:20' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'13:30' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print $1}' access.log | sort  |uniq -c |sort -n | tail
查看完整描述

3 回答

?
慕容708150

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊

是的,有多種方法可以做到這一點(diǎn)。我會(huì)這么做的。對(duì)于初學(xué)者來(lái)說(shuō),不需要管cat的輸出,只需用awk.

awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` '$4 > Date {print Date, $0}' access_log

假設(shè)您的日志看起來(lái)像我的日志(它們是可配置的),而不是存儲(chǔ)在字段4中的日期。我在上面所做的是在過(guò)去的2小時(shí)內(nèi)找到所有的東西。Note the -d'now-2 hours'或者從字面上說(shuō)是減2小時(shí),對(duì)我來(lái)說(shuō)是這樣的:[10/Oct/2011:08:55:23

所以我要做的是存儲(chǔ)兩個(gè)小時(shí)前格式化的值,并與字段四進(jìn)行比較。條件表達(dá)式應(yīng)該是直接向前的,然后打印日期,然后是輸出字段分隔符(在本例中是OFS-或空格),后面是整行$0。您可以使用以前的表達(dá)式,只需打印$1(IP地址)。

awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` '$4 > Date {print $1}' | sort  |uniq -c |sort -n | tail

如果要使用范圍,請(qǐng)指定兩個(gè)日期變量并適當(dāng)?shù)貥?gòu)造表達(dá)式。

所以,如果您想在2到4小時(shí)前找到一些東西,您的表達(dá)式可能會(huì)如下所示

awk -vDate=`date -d'now-4 hours' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` '$4 > Date && $4 < Date2 {print Date, Date2, $4} access_log'

下面是我回答的關(guān)于bash中日期的一個(gè)問(wèn)題,您可能會(huì)發(fā)現(xiàn)這很有幫助。當(dāng)周星期一的打印日期(以bash為單位)


查看完整回答
反對(duì) 回復(fù) 2019-07-01
?
飲歌長(zhǎng)嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

因?yàn)檫@是共同 Perl任務(wù)

因?yàn)檫@和從日志文件中提取最后10分鐘直到日志文件結(jié)束的時(shí)候。

因?yàn)槲倚枰麄?,所以?很快)寫(xiě)到:

#!/usr/bin/perl -ws# This script parse logfiles for a specific period of timesub usage {
    printf "Usage: %s -s=<start time> [-e=<end time>] <logfile>\n";
    die $_[0] if $_[0];
    exit 0;}use Date::Parse;usage "No start time submited" unless $s;my $startim=str2time($s) or die;my $endtim=str2time($e) if $e;$endtim=time() unless $e;usage "Logfile not submited" unless $ARGV[0];open my $in, "<" . $ARGV[0] or usage "Can't open '$ARGV[0]' for reading";$_=<$in>;exit unless $_; # empty file# Determining regular expression, depending on log formatmy $logre=qr{^(\S{3}\s+\d{1,2}\s+(\d{2}:){2}\d+)};$logre=qr{^[^\[]*\[(\d+/\S+/(\d+:){3}\d+\s\+\d+)\]} unless /$logre/;while (<$in>) {
    /$logre/ && do {
        my $ltim=str2time($1);
        print if $endtim >= $ltim && $ltim >= $startim;
    };};

這可以用作:

./timelapsinlog.pl -s=09:18 -e=09:24 /path/to/logfile

用于在09H18和09H24之間打印日志。

./timelapsinlog.pl -s='2017/01/23 09:18:12' /path/to/logfile

供印刷用january 23th, 9h18'12"上至現(xiàn)在.

為了減少Perl代碼,我使用了-s切換到允許從命令行自動(dòng)分配變量:-s=09:18將填充一個(gè)變量$s夾住09:18..注意不要錯(cuò)過(guò)等號(hào)。=沒(méi)有空位!

諾塔:這有兩種不同的雷吉兩種不同的日志標(biāo)準(zhǔn)。如果需要不同的日期/時(shí)間格式解析,可以發(fā)布自己的regex,或者從日志文件中發(fā)布格式化日期的示例。

^(\S{3}\s+\d{1,2}\s+(\d{2}:){2}\d+)         # ^Jan  1 01:23:45^[^\[]*\[(\d+/\S+/(\d+:){3}\d+\s\+\d+)\]    # ^... [01/Jan/2017:01:23:45 +0000]


查看完整回答
反對(duì) 回復(fù) 2019-07-01
?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊

如果有人遇到awk: invalid -v option,下面是一個(gè)腳本,用于在預(yù)定義的時(shí)間范圍內(nèi)獲取最活躍的IP:

cat <FILE_NAME> | awk '$4 >= "[04/Jul/2017:07:00:00" && $4 < "[04/Jul/2017:08:00:00"' | awk '{print $1}' | sort -n | uniq -c | sort -nr | head -20


查看完整回答
反對(duì) 回復(fù) 2019-07-01
  • 3 回答
  • 0 關(guān)注
  • 406 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)