#查nohup.out日志表2019-11-18 20:00:00 -?2019-11-18 22:00:00這兩小時的記錄(前提是日志里有這樣的格式時間),并生成exchange_update.log
創(chuàng)新新互聯(lián),憑借十余年的成都網(wǎng)站制作、網(wǎng)站設(shè)計經(jīng)驗,本著真心·誠心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計網(wǎng)站有上1000+案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)建站。
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
-------------------------------------------------------------------------------
日志查詢
場景:access.log日志是一個大文件,含有所有日期的信息。但需要查詢某天某時的日志時,直接grep和sed都很耗時,所以需要先將該段日期的日志保存再查詢。
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"';
先按日期查詢,并將結(jié)果保存
sed -n '/12\/Feb\/2020:15:0./,/12\/Feb\/2020:16:0./p'?acess.log?> 202021215.log #加\是為了反編譯,避免解析器將/符號當做編譯符號
sed:
-n,?--quiet,?--silent
??????????????suppress?automatic?printing?of?pattern?space # 抑制自動打印模式空間
查詢202021215.log中502響應(yīng)碼
cat??202021215.log | grep "^502$"? ?#查找有單獨502字樣的段
運行結(jié)果:NULL #因為日志里本來就沒有
grep:
^ 指匹配字符串在行首
$ 指匹配字符串在行尾
精確查詢:
sed -n '/2020-02-12 15:00:00/,/2020-02-12 16:00:00/p'? ris.log
運行結(jié)果:NULL
坑點:
如果開始時間日志里面是沒有的,那么查詢結(jié)果為空,比如開始時間2020-02-12 15:00:00日志里沒有
如果結(jié)束時間日志里面是沒有的,查詢的結(jié)果就是開始時間到最后的全部日志
模糊查詢:
sed -n '/2020-02-12 15:0./,/2020-02-12 16:0./p'? ris.log? #從日志里有2020-02-12 15點0第一個字樣的開始查,直到有第一個2020-02-12 16:0字樣的結(jié)束
日志分割
此部分轉(zhuǎn)載至:https://blog.csdn.net/feinifi/article/details/78455563
場景:access.log所有日期的日志都集中在這里,查找問題不方便,需要將該日志按日期分割出來。
讓日志每天按日期保存成單個文件,腳本
#!/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í)行文件,并將腳本作為定時任務(wù)啟動腳本,放入crontab中。
chmod +x nginx_logback.sh
crontab -e
#!/bin/bash
0 0 * * * /bin/bash /root/nginx_logback.sh