溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Linux 按時(shí)間段查詢(xún)大日志表信息及按日期分割

發(fā)布時(shí)間:2020-07-20 09:25:01 來(lái)源:網(wǎng)絡(luò) 閱讀:716 作者:虎皮喵的喵 欄目:系統(tǒng)運(yùn)維

#查nohup.out日志表2019-11-18 20:00:00 -?2019-11-18 22:00:00這兩小時(shí)的記錄(前提是日志里有這樣的格式時(shí)間),并生成exchange_update.log

cat nohup.out | sed -n '/2019-11-18 20:00:00/,/2019-11-18 22:00:00/ p' > exchange_update.log


-------------------------------------------------------------------------------

2020-02-31 18:21

-------------------------------------------------------------------------------

日志查詢(xún)

場(chǎng)景:access.log日志是一個(gè)大文件,含有所有日期的信息。但需要查詢(xún)某天某時(shí)的日志時(shí),直接grep和sed都很耗時(shí),所以需要先將該段日期的日志保存再查詢(xún)。


acess.log日志格式:

[12/Feb/2020:15:40:46 +0800] -- 101.20.18.75 -- 57197 "POST /api?apiCode=meu_mksm:info HTTP/1.1" 200 "0.011" -- "0.011" -- "gdn.cn 154.121.10.206 9443 localhost" - "https://gdn.cn:9443/view/xtgl/mksm_view.html?apiCode=meu_mksm:info&code=M9502"


nginx.conf的access.log格式設(shè)置:

'[$time_local] -- $remote_addr -- $remote_port "$request_method $request_uri $server_protocol" $status "$upstream_response_time" -- "$request_time" -- "$host $server_addr $server_port $server_name" - "$http_referer"';


先按日期查詢(xún),并將結(jié)果保存

sed -n '/12\/Feb\/2020:15:0./,/12\/Feb\/2020:16:0./p'?acess.log?> 202021215.log #加\是為了反編譯,避免解析器將/符號(hào)當(dāng)做編譯符號(hào)

sed:

-n,?--quiet,?--silent

??????????????suppress?automatic?printing?of?pattern?space # 抑制自動(dòng)打印模式空間


查詢(xún)202021215.log中502響應(yīng)碼

cat??202021215.log | grep "^502$"? ?#查找有單獨(dú)502字樣的段

運(yùn)行結(jié)果:NULL #因?yàn)槿罩纠锉緛?lái)就沒(méi)有

grep:

^ 指匹配字符串在行首

$ 指匹配字符串在行尾


精確查詢(xún):

sed -n '/2020-02-12 15:00:00/,/2020-02-12 16:00:00/p'? ris.log

運(yùn)行結(jié)果:NULL

坑點(diǎn):

如果開(kāi)始時(shí)間日志里面是沒(méi)有的,那么查詢(xún)結(jié)果為空,比如開(kāi)始時(shí)間2020-02-12 15:00:00日志里沒(méi)有

如果結(jié)束時(shí)間日志里面是沒(méi)有的,查詢(xún)的結(jié)果就是開(kāi)始時(shí)間到最后的全部日志


模糊查詢(xún):

sed -n '/2020-02-12 15:0./,/2020-02-12 16:0./p'? ris.log? #從日志里有2020-02-12 15點(diǎn)0第一個(gè)字樣的開(kāi)始查,直到有第一個(gè)2020-02-12 16:0字樣的結(jié)束



日志分割

此部分轉(zhuǎn)載至:https://blog.csdn.net/feinifi/article/details/78455563

場(chǎng)景:access.log所有日期的日志都集中在這里,查找問(wèn)題不方便,需要將該日志按日期分割出來(lái)。


讓日志每天按日期保存成單個(gè)文件,腳本

#!/bin/bash

YESTERDAY=$(date -d "yesterday" +"%Y-%m-%d")

LOGPATH=/usr/local/openresty/nginx/logs/

PID=${LOGPATH}nginx.pid

mv ${LOGPATH}access.log ${LOGPATH}access-${YESTERDAY}.log

mv ${LOGPATH}error.log ${LOGPATH}error-${YESTERDAY}.log

kill -USR1 `cat ${PID}`


變更腳本為可執(zhí)行文件,并將腳本作為定時(shí)任務(wù)啟動(dòng)腳本,放入crontab中。

chmod +x nginx_logback.sh


crontab -e

#!/bin/bash

0 0 * * * /bin/bash /root/nginx_logback.sh



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI