Linux 日至分析常用命令

2022-08-18 07:24:19 字數 4569 閱讀 9744

(注轉貼,位址詳見末尾!)

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系統中使用...