怎么建單位的網(wǎng)站檢察機關(guān)加強網(wǎng)站建設(shè)
鶴壁市浩天電氣有限公司
2026/01/24 10:50:58
怎么建單位的網(wǎng)站,檢察機關(guān)加強網(wǎng)站建設(shè),淮南58同城網(wǎng),怎么注冊公司公眾號微信號日志統(tǒng)計與分析指南
目錄
1. 多文件查找2. 查找日志的常用方法3. 統(tǒng)計日志內(nèi)容4. 高級功能5. 實用腳本示例 1. 多文件查找
1.1 查找普通日志文件#xff08;.log#xff09;
# 查找當(dāng)前目錄及子目錄下所有 .log 文件
find . -name *.log# 查找指定目錄下的 .…日志統(tǒng)計與分析指南目錄1. 多文件查找2. 查找日志的常用方法3. 統(tǒng)計日志內(nèi)容4. 高級功能5. 實用腳本示例1. 多文件查找1.1 查找普通日志文件.log# 查找當(dāng)前目錄及子目錄下所有 .log 文件find.-name*.log# 查找指定目錄下的 .log 文件find/var/log -name*.log# 查找最近修改的日志文件find.-name*.log-mtime -1# 最近1天find.-name*.log-mtime -7# 最近7天1.2 查找壓縮日志文件# 查找 .gz 壓縮文件find.-name*.log.gzfind.-name*.gz# 查找 .zip 壓縮文件find.-name*.log.zipfind.-name*.zip# 查找多種壓縮格式find.(-name*.log.gz-o -name*.log.zip-o -name*.log.bz2)# 查找所有壓縮文件包括 .gz, .zip, .bz2, .xzfind.-type f(-name*.gz-o -name*.zip-o -name*.bz2-o -name*.xz)1.3 同時查找普通和壓縮日志文件# 方法1使用 -o 選項find.(-name*.log-o -name*.log.gz-o -name*.log.zip)# 方法2使用正則表達式需要 -regex 選項find.-regex.*.log(.gz|.zip)?$# 方法3分別查找后合并find.-name*.log-o -name*.log.*|grep-E.(log|gz|zip|bz2)$1.4 按時間范圍查找日志文件# 查找今天修改的文件find.-name*.log*-mtime0# 查找最近3天的文件find.-name*.log*-mtime -3# 查找指定日期范圍的文件需要結(jié)合 stat 或 lsfind.-name*.log*-newermt2025-01-01!-newermt2025-01-312. 查找日志的常用方法2.1 grep - 最常用的文本搜索工具grep 常用選項表格選項說明示例-i忽略大小寫grep -i error app.log-n顯示匹配行的行號grep -n ERROR app.log-v反向匹配顯示不包含關(guān)鍵字的行g(shù)rep -v INFO app.log-c統(tǒng)計匹配的行數(shù)grep -c ERROR app.log-l只顯示匹配的文件名grep -l ERROR *.log-L只顯示不匹配的文件名grep -L ERROR *.log-r或-R遞歸搜索目錄grep -r ERROR /var/log/-E使用擴展正則表達式grep -E ERROR|WARN app.log-F將模式視為固定字符串不使用正則grep -F ERROR app.log-A n顯示匹配行及其后 n 行g(shù)rep -A 3 ERROR app.log-B n顯示匹配行及其前 n 行g(shù)rep -B 3 ERROR app.log-C n顯示匹配行及其前后各 n 行g(shù)rep -C 3 ERROR app.log-o只顯示匹配的部分而不是整行g(shù)rep -o ERROR app.log-h不顯示文件名前綴多文件搜索時grep -h ERROR *.log-H顯示文件名前綴默認行為grep -H ERROR app.log-w匹配整個單詞grep -w error app.log-x匹配整行g(shù)rep -x ERROR app.log-q靜默模式不輸出結(jié)果用于腳本判斷grep -q ERROR app.log echo Found-s抑制錯誤消息grep -s ERROR app.log--color高亮顯示匹配的文本grep --coloralways ERROR app.log-m n最多匹配 n 行后停止grep -m 10 ERROR app.log-f file從文件中讀取模式grep -f patterns.txt app.log-e pattern指定多個模式grep -e ERROR -e WARN app.log使用示例# 基本搜索grepERRORapp.log# 忽略大小寫grep-ierrorapp.log# 顯示行號grep-nERRORapp.log# 顯示匹配行的上下文前后各3行g(shù)rep-C3ERRORapp.loggrep-B3ERRORapp.log# 只顯示前3行g(shù)rep-A3ERRORapp.log# 只顯示后3行# 反向匹配顯示不包含關(guān)鍵字的行g(shù)rep-vINFOapp.log# 使用正則表達式grep-EERROR|WARNapp.loggrep-E[0-9]{4}-[0-9]{2}-[0-9]{2}app.log# 匹配日期格式# 在多個文件中搜索grepERROR*.loggrep-rERROR/var/log/# 遞歸搜索目錄# 只顯示匹配的文件名grep-lERROR*.log# 統(tǒng)計匹配的行數(shù)grep-cERRORapp.log# 只顯示匹配的部分grep-oERRORapp.log|wc-l# 統(tǒng)計關(guān)鍵字出現(xiàn)次數(shù)# 匹配整個單詞grep-werrorapp.log# 不會匹配 errors 或 ErrorCode# 高亮顯示匹配文本grep--coloralwaysERRORapp.log# 組合使用多個選項grep-rn --coloralwaysERROR/var/log/# 遞歸搜索、顯示行號、高亮顯示2.2 在壓縮文件中搜索# 在 .gz 文件中搜索zcat 或 zgrepzgrepERRORapp.log.gz zcat app.log.gz|grepERROR# 在 .bz2 文件中搜索bzgrepERRORapp.log.bz2 bzcat app.log.bz2|grepERROR# 在 .xz 文件中搜索xzgrepERRORapp.log.xz xzcat app.log.xz|grepERROR# 在 .zip 文件中搜索unzip-p app.log.zip|grepERROR# 在多個壓縮文件中搜索zgrepERROR*.log.gz2.3 多文件同時搜索# 在多個普通日志文件中搜索grepERRORapp.log app2.log app3.log# 在普通文件和壓縮文件中同時搜索grepERROR*.logzgrepERROR*.log.gz# 使用 find xargs 在多個文件中搜索find.-name*.log*-type f|xargsgrepERROR# 處理包含空格的文件名find.-name*.log*-type f -print0|xargs-0grepERROR2.4 按時間范圍搜索# 搜索指定時間段的日志假設(shè)日志格式包含時間戳grep2025-01-15app.log|grepERROR# 搜索時間范圍需要日志格式支持awk/2025-01-15 10:00:00/,/2025-01-15 11:00:00/app.log# 使用 sed 提取時間范圍sed-n/2025-01-15 10:00:00/,/2025-01-15 11:00:00/papp.log2.5 高級搜索技巧# 組合多個條件ANDgrepERRORapp.log|grepPmsService# 組合多個條件ORgrep-EERROR|WARN|FATALapp.log# 排除某些行g(shù)repERRORapp.log|grep-vDEBUG# 使用管道鏈catapp.log|grepERROR|grepPmsService|head-20# 實時監(jiān)控日志tail greptail-f app.log|grepERROR3. 統(tǒng)計日志內(nèi)容3.1 統(tǒng)計行數(shù)# 統(tǒng)計文件總行數(shù)wc-l app.log# 統(tǒng)計多個文件的行數(shù)wc-l *.log# 統(tǒng)計匹配關(guān)鍵字的行數(shù)grep-cERRORapp.log# 統(tǒng)計多個文件中匹配的行數(shù)grep-cERROR*.log# 統(tǒng)計壓縮文件的行數(shù)zcat app.log.gz|wc-l3.2 統(tǒng)計關(guān)鍵字出現(xiàn)次數(shù)# 統(tǒng)計單個關(guān)鍵字出現(xiàn)次數(shù)grep-oERRORapp.log|wc-l# 統(tǒng)計多個關(guān)鍵字出現(xiàn)次數(shù)grep-oEERROR|WARN|FATALapp.log|sort|uniq-c# 統(tǒng)計每個關(guān)鍵字的出現(xiàn)次數(shù)并排序grep-oEERROR|WARN|FATALapp.log|sort|uniq-c|sort-rn# 統(tǒng)計所有唯一關(guān)鍵字的出現(xiàn)次數(shù)grep-oEERROR|WARN|FATALapp.log|sort|uniq-c3.3 統(tǒng)計關(guān)鍵字頻率Top N# 統(tǒng)計出現(xiàn)頻率最高的10個關(guān)鍵字grep-oEERROR|WARN|FATALapp.log|sort|uniq-c|sort-rn|head-10# 統(tǒng)計所有單詞的頻率Top 20catapp.log|tr-s
|sort|uniq-c|sort-rn|head-20# 統(tǒng)計特定模式的頻率如類名、方法名grep-oE[PmsService]|[CouponService]app.log|sort|uniq-c|sort-rn3.4 按時間統(tǒng)計# 統(tǒng)計每小時錯誤數(shù)量假設(shè)日志格式y(tǒng)yyy-MM-dd HH:mm:ssgrepERRORapp.log|awk{print$1 $2}|cut-d: -f1|sort|uniq-c# 統(tǒng)計每天的日志行數(shù)awk{print$1}app.log|sort|uniq-c# 統(tǒng)計每分鐘的請求數(shù)需要根據(jù)實際日志格式調(diào)整awk{print substr($0,1,16)}app.log|sort|uniq-c3.5 統(tǒng)計文件大小# 查看文件大小ls-lh app.log# 查看多個文件的總大小du-ch *.log# 查看壓縮文件大小ls-lh *.log.gz# 查看目錄下所有日志文件的總大小du-sh /var/log/3.6 統(tǒng)計唯一值# 統(tǒng)計唯一的錯誤類型grepERRORapp.log|awk-FERROR{print$2}|sort|uniq# 統(tǒng)計唯一的用戶ID假設(shè)日志中包含用戶IDgrep-oEuserId:[0-9]app.log|sort|uniq# 統(tǒng)計唯一的IP地址grep-oE[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}app.log|sort|uniq4. 高級功能4.1 日志聚合分析# 合并多個日志文件并排序cat*.log|sort# 合并并去重cat*.log|sort|uniq# 合并壓縮文件zcat *.log.gz|sort4.2 提取特定字段# 使用 awk 提取特定列awk{print$1,$2,$5}app.log# 提取第1、2、5列# 提取 JSON 格式日志中的特定字段需要 jqcatapp.log|jq.level, .message# 提取時間戳和錯誤信息grepERRORapp.log|awk{print$1 $2 $NF}4.3 日志格式化輸出# 美化 JSON 日志需要 jqcatapp.log|jq.# 格式化時間戳awk{print strftime(%Y-%m-%d %H:%M:%S,$1)}app.log# 添加行號cat-n app.log4.4 日志對比分析# 對比兩個日志文件的差異diffapp.log app2.log# 對比并顯示上下文diff-u app.log app2.log# 找出只在文件1中存在的行comm-23(sortapp.log)(sortapp2.log)# 找出兩個文件共有的行comm-12(sortapp.log)(sortapp2.log)4.5 性能分析# 統(tǒng)計接口響應(yīng)時間假設(shè)日志包含耗時信息grep-oE耗時 [0-9] msapp.log|grep-oE[0-9]|awk{sum$1; count} END {print 平均耗時:, sum/count, ms}# 找出最慢的10個請求grep-oE耗時 [0-9] msapp.log|grep-oE[0-9]|sort-rn|head-10# 統(tǒng)計耗時分布grep-oE耗時 [0-9] msapp.log|grep-oE[0-9]|awk{if($1100) a; else if($1500) b; else c} END {print 0-100ms:, a, 100-500ms:, b, 500ms:, c}4.6 錯誤分析# 提取錯誤堆棧awk/ERROR/,/^[[:space:]]*$/app.log# 統(tǒng)計異常類型grep-oEException: [a-zA-Z.]app.log|sort|uniq-c|sort-rn# 找出最常見的錯誤消息grepERRORapp.log|awk-FERROR{print$2}|sort|uniq-c|sort-rn|head-104.7 實時監(jiān)控# 實時監(jiān)控日志文件tail-f app.log# 實時監(jiān)控并過濾tail-f app.log|grepERROR# 監(jiān)控多個日志文件tail-f app.log app2.log# 實時監(jiān)控并高亮關(guān)鍵字tail-f app.log|grep--coloralways -EERROR|WARN|FATAL4.8 日志采樣# 每10行采樣1行awkNR % 10 0app.log# 隨機采樣1000行shuf-n1000app.log# 采樣前1000行和后1000行head-1000 app.logtail-1000 app.log5. 實用腳本示例5.1 統(tǒng)計所有日志文件中的錯誤數(shù)量#!/bin/bash# 統(tǒng)計所有日志文件包括壓縮文件中的錯誤數(shù)量LOG_DIR/var/logKEYWORDERRORecho正在統(tǒng)計$LOG_DIR目錄下的錯誤日志...# 統(tǒng)計普通日志文件forfilein$(find$LOG_DIR -name*.log-type f);docount$(grep-c$KEYWORD$file2/dev/null||echo0)echo$file:$countdone# 統(tǒng)計壓縮日志文件forfilein$(find$LOG_DIR -name*.log.gz-type f);docount$(zgrep -c$KEYWORD$file2/dev/null||echo0)echo$file:$countdone5.2 按日期統(tǒng)計日志#!/bin/bash# 按日期統(tǒng)計日志行數(shù)LOG_FILEapp.logecho日期統(tǒng)計awk{print$1}$LOG_FILE|sort|uniq-c|sort-rn5.3 提取錯誤日志到單獨文件#!/bin/bash# 從多個日志文件中提取錯誤日志OUTPUT_FILEerrors.logKEYWORDERROR$OUTPUT_FILE# 清空輸出文件# 處理普通日志文件forfilein*.log;doif[-f$file];thenecho處理文件:$filegrep$KEYWORD$file$OUTPUT_FILEfidone# 處理壓縮日志文件forfilein*.log.gz;doif[-f$file];thenecho處理文件:$filezgrep$KEYWORD$file$OUTPUT_FILEfidoneecho錯誤日志已保存到:$OUTPUT_FILE5.4 分析日志中的慢請求#!/bin/bash# 分析日志中的慢請求假設(shè)日志包含耗時信息LOG_FILEapp.logTHRESHOLD1000# 閾值1000msecho查找耗時超過${THRESHOLD}ms 的請求grep-E耗時 [0-9] ms$LOG_FILE|grep-oE耗時 [0-9] ms|grep-oE[0-9]|awk-vthreshold$THRESHOLD$1 threshold {print$1 ms}|sort-rn|head-205.5 統(tǒng)計日志文件大小和行數(shù)#!/bin/bash# 統(tǒng)計所有日志文件的大小和行數(shù)echo文件大小 | 行數(shù) | 文件名echo----------------------------------------forfilein$(find.-name*.log*-type f);doif[[$file*.gz]];thensize$(du-h$file|cut-f1)lines$(zcat$file2/dev/null|wc-l)elif[[$file*.bz2]];thensize$(du-h$file|cut-f1)lines$(bzcat$file2/dev/null|wc-l)elsesize$(du-h$file|cut-f1)lines$(wc-l$file)fiprintf%-10s | %-8s | %s
$size$lines$filedone5.6 一鍵日志分析報告#!/bin/bash# 生成日志分析報告LOG_FILE${1:-app.log}REPORT_FILElog_report_$(date%Y%m%d_%H%M%S).txt{echoecho日志分析報告echo生成時間:$(date)echo日志文件:$LOG_FILEechoechoecho1. 基本信息echo----------------------------------------echo總行數(shù):$(wc-l$LOG_FILE)echo文件大小:$(du-h $LOG_FILE|cut-f1)echoecho2. 錯誤統(tǒng)計echo----------------------------------------echoERROR 數(shù)量:$(grep-cERROR$LOG_FILE2/dev/null||echo0)echoWARN 數(shù)量:$(grep-cWARN$LOG_FILE2/dev/null||echo0)echoFATAL 數(shù)量:$(grep-cFATAL$LOG_FILE2/dev/null||echo0)echoecho3. Top 10 錯誤消息echo----------------------------------------grepERROR$LOG_FILE|awk-FERROR{print$2}|sort|uniq-c|sort-rn|head-10echoecho4. 時間分布按小時echo----------------------------------------awk{print$2}$LOG_FILE|cut-d: -f1|sort|uniq-cecho}$REPORT_FILEecho報告已生成:$REPORT_FILEcat$REPORT_FILE5.7 使用說明# 給腳本添加執(zhí)行權(quán)限chmodx script_name.sh# 運行腳本./script_name.sh# 或者直接使用 bash 運行bashscript_name.sh6. 常用工具推薦6.1 命令行工具grep: 文本搜索已內(nèi)置awk: 文本處理已內(nèi)置sed: 流編輯器已內(nèi)置jq: JSON 處理工具需要安裝rg (ripgrep): 更快的 grep 替代品需要安裝ag (The Silver Searcher): 代碼搜索工具需要安裝6.2 安裝額外工具# macOSbrewinstalljq ripgrep the_silver_searcher# Ubuntu/Debiansudoapt-getinstalljq ripgrep silversearcher-ag# CentOS/RHELsudoyuminstalljq epel-releasesudoyuminstallripgrep the_silver_searcher6.3 使用 ripgrep (rg) 的優(yōu)勢# rg 比 grep 更快且默認遞歸搜索rgERROR.# 遞歸搜索當(dāng)前目錄rgERROR--type log# 只搜索日志文件rgERROR-g*.log# 使用 glob 模式rgERROR-g*.log.gz# 搜索壓縮文件需要配合其他工具7. 最佳實踐7.1 日志文件管理定期清理舊日志文件使用日志輪轉(zhuǎn)logrotate壓縮歷史日志以節(jié)省空間設(shè)置日志保留策略7.2 搜索優(yōu)化使用grep -E進行正則匹配時盡量使用具體模式大文件搜索時先使用head或tail縮小范圍壓縮文件搜索時優(yōu)先使用zgrep等專用工具7.3 性能考慮大文件處理時考慮使用split分割文件使用parallel工具并行處理多個文件對于超大數(shù)據(jù)集考慮使用專門的日志分析工具如 ELK Stack8. 快速參考8.1 常用命令速查需求命令查找所有日志文件find . -name *.log*搜索關(guān)鍵字grep ERROR app.log統(tǒng)計行數(shù)wc -l app.log統(tǒng)計關(guān)鍵字數(shù)量grep -c ERROR app.log實時監(jiān)控tail -f app.log | grep ERROR搜索壓縮文件zgrep ERROR app.log.gz提取時間范圍sed -n /start/,/end/p app.log統(tǒng)計頻率grep -o ERROR app.log | sort | uniq -c8.2 常用組合命令# 查找 搜索 統(tǒng)計find.-name*.log-execgrep-cERROR{};# 搜索 排序 去重 統(tǒng)計grepERRORapp.log|sort|uniq-c|sort-rn# 提取 格式化 輸出grepERRORapp.log|awk{print$1,$2,$NF}errors.txt提示: 根據(jù)實際日志格式調(diào)整命令中的字段分隔符和模式匹配規(guī)則。