(注轉貼,位址詳見末尾!)
1. grep查詢匹配文字
【a】在檔案中查詢
$grep 'failed to initialize beanfactory' upp-account.log
【b】查詢並顯示匹配行及以下的200行
$grep -a 200 'failed to initialize beanfactory' upp-account.log
【c】查詢並顯示匹配行及以上的200行
$grep -b 200 'failed to initialize beanfactory' upp-account.log
【d】查詢,忽略大小寫,並顯示匹配行及以上的200行
$grep -i -a 200 'failed to initialize beanfactory' upp-account.log
【linux下日誌分析的幾個常用命令】
有時候我們需要對線上的應用日誌做一些分析和簡單的統計工作,熟悉一下linux下文字處理的幾個命令,可能會有意想不到的收穫:
more 檢視檔案內容
grep 在檔案中查詢
awk 文字處理
sort 排序
sed 文字處理
下面舉個兩個例子,說明一下這幾個命令的簡單應用
1、統計一下今天支付寶到**、**到支付寶的介面呼叫情況
第一步,找到日誌檔案路徑,確定日誌格式
因為介面呼叫走是tc,先ssh到一台tc的伺服器,到日誌目錄下,ll 一下,看到有幾個命名為alipay的日誌檔案,感覺是列印介面呼叫日誌的,
more alipay-notify-success.log
輸出:2009-06-29 00:00:00,421 info alipay-notify-success -
*********alipay notify callback*********
out_trade_no=t200p2062628786,trade_status=wait_buyer_pay,notify_action_type=createpartnertradeaction,
input:
從日誌看出,這是支付寶****介面的日誌,格式包括:時間,訂單號、狀態、通知型別等等
more alipay.log
輸出:2009-06-29 00:00:00,072 info core.signedtbclientinvoker -
**********payway request and response*********
service name:
trade_create
request url:
從日誌上看,這是**呼叫支付寶的日誌,格式包括:時間,介面型別,請求內容等等
第二步,查詢特徵文字
需要分型別統計介面的呼叫次數,所以特徵字串就是介面的型別文字,使用grep 命令
grep 『,notify_action_type』 alipay-notify-success.log
第二個日誌比較特殊,特徵文字單獨一行,沒有固定字首或者字尾特徵,而前一行是固定的」service name:「,可以查詢前一行,然後grep輸出的時候多輸出一行:
grep 『service name:』 -a1 alipay.log
grep 命令有很多可選引數,比如忽略大小寫,輸出前(-b before),後(-a after)行文字等等。
第三步,文字分列
通常,日誌檔案的一行文字,都由幾列組成,中間是分隔字串,而我們的目標就是找到需要的列,並進行相關的計算,統計,這裡就需要用到 awk 命令
對於 alipay-notify-success.log 日誌檔案,我們使用下面命令:
grep 『,notify_action_type』 alipay-notify-success.log | awk -f』,』 『end』
grep命令找到符合的行,作為awk命令的輸入,-f 後面是指定分隔符號,後面是表示式,首先定義乙個陣列a(也可以理解為是乙個map)用分隔出來的第三列作為下標(key),值每次加一,end 後面是最後執行的語句,迴圈輸出陣列
awk命令本身很強大,可以全面地看一下它幫助
第四步,排序
第三步已經完成了計算、統計工作,最後我們根據呼叫次數進行一下排序,方便檢視
這裡使用sort 命令
grep 『,notify_action_type』 alipay-notify-success.log | awk -f』,』 『end』 |sort -t, -k2 -n -r
-t 跟ark的-f功能類似,是把一行文字分成幾列,-k指定需要排序的列,-n表示按數字方式排序,-r 表示倒序
最後,我們看到了輸出:
notify_action_type=createpartnertradeaction,52641
notify_action_type=paybyaccountaction,44807
notify_action_type=sellersendgoodsaction,43848
notify_action_type=confirmreceiveaction,40705
notify_action_type=modifytradeaction,25733
notify_action_type=allowrefundaction,10407
notify_action_type=autofinishtradeaction,8351
notify_action_type=closetradeaction,8030
notify_action_type=refunddisburseaction,2330
notify_action_type=confirmdisburseaction,401
notify_action_type=extendtimeoutlimitaction,368
notify_action_type=modifyrefundiiiaction,280
notify_action_type=cancelrefundiiiaction,52
notify_action_type=null,20
notify_action_type=unfreezetradeaction,1
notify_action_type=refundvouchercheckpassaction,1
notify_action_type=freezetradeaction,1
當然這是單台機器的,根據應用的機器數量,可以大致評估一下總的情況。
類似的,對於 日誌alipay.log
grep 『service name:』 -a1 alipay.log | sed 『/service name:/』d |sed 『/–/』d | awk -f』 『 『end』 | sort -t, -k2 -n -r
輸出:trade_create,51326
send_goods_confirm_by_platform,40716
confirmreceivegoods,39351
modifytradefee,25261
cae_charge_agent,10074
close_trade,3871
extendtimeout,378
calculate_service_fee,52
union_data_prepare,15
logistic_sign_in,4
接下來,我們再看乙個例子
需求:統計一下,denali機器中,我的**首頁 這個頁面的請求次數和平均響應時間
還是分幾步:
1、首先找到日誌和日誌格式
apache 的訪問日誌,/home/admin/cai/logs/cronlog/2009/06/2002009-06-29-taobao-access_log
more 2002009-06-29-taobao-access_log
輸出:58.208.1.15 148452 3251 [29/jun/2009:00:00:04 +0800] 「get 200 14147 「
2、查詢特徵文字
3、文字分列
例外還有tail -f 、head、more、less 、cat 和 uniq 等比較實用!
**思考與學習
linux日誌分析常用命令
1.檢視檔案內容 cat n 顯示行號 2.分頁顯示 more enter 顯示下一行 f 顯示下一屏 b 顯示上一屏 less get 查詢 get 字串並高亮顯示 3.顯示檔案尾 tail f 不退出持續顯示 n 顯示檔案最後n行 4.顯示標頭檔案 head n 顯示檔案開始n行 5.內容排序 ...
Linux常用命令之Linux常用命令實戰知識點
在在複習linux,這是以前做的筆記,分享一下。linux系統 一切皆檔案 操作檔案就是操作linux系統 一 linux版本 1 redhat 企業版 收費 2 centos redhat的社群版 免費 3 ubuntu 4 紅旗 二 linux的特點 1 多使用者 多工 2 豐富的網路功能 3 ...
LINUX常用命令
一 目錄結構 目錄名稱 意 義 vmlinuz 該目錄中存放的是系統核心 bin 該目錄中存放linux的常用命令,在有的版本中是一些和根目錄下相同的目錄。boot 該目錄下存放的都是系統啟動時要用到的程式,當用lilo引導linux時,會用到這裡的一些資訊 dev 該目錄包含了linux系統中使用...