日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

日志处理--高效Linux命令整理

發(fā)布時(shí)間:2025/3/20 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 日志处理--高效Linux命令整理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在學(xué)習(xí)使用python處理日志開始階段,對(duì)我阻力最大的莫過于對(duì)linux的不熟悉了,有種寸步難行的感覺。

在之后亂學(xué)一通之后,發(fā)現(xiàn)有點(diǎn)對(duì)我頗有益處:

  • 學(xué)《鳥哥linux私房菜基礎(chǔ)學(xué)習(xí)篇》,內(nèi)容不多,但是對(duì)linux文件系統(tǒng)和基本組成有個(gè)基本的認(rèn)識(shí)很有必要;
  • 熟悉使用vim。開始的時(shí)候每次都下載到windowns再編輯實(shí)在太傻 了~;
  • 使用ls -l + 通配符查找文件,復(fù)雜的查找使用find;
  • 按自己需要學(xué)習(xí)linux文本領(lǐng)域的三大利器:grep(查找)、sed(編輯)、awk(分析)

  • 大概整理下之前常用的命令:

    一、find命令

    1、查找當(dāng)前目錄下非空且滿足命名要求的文件

    find ./ ! -empty -name "*20160228*"

    (注意空格)

    2、在一堆文件中查詢關(guān)鍵字所在的行

    find ./-name "*20160228*" | xargs cat | grep "189"

    也可以直接使用

    cat "*20160228*" | grep "189"

    cat一堆文件首先會(huì)把一堆文件合并為一個(gè)大文件。

    3、查找并復(fù)制

    find ./ -name "*201504101446*" | xargs -i cp {} ./yourDir

    4、查找并刪除

    $find ./ -name "*201502*.log" -exec rm {} \;

    【注】exec與xargs差異

    在使用find命令的-exec選項(xiàng)處理匹配到的文件時(shí), find命令將所有匹配到的文件一起傳遞給exec執(zhí)行。 但有些系統(tǒng)對(duì)能夠傳遞給exec的命令長(zhǎng)度有限制,這樣在find命令運(yùn)行幾分鐘之后,就會(huì)出現(xiàn) 溢出錯(cuò)誤。 錯(cuò)誤信息通常是“參數(shù)列太長(zhǎng)”或“參數(shù)列溢出”。 5、查詢當(dāng)前目錄下每個(gè)文件的行數(shù) find . -type f | xargs wc -l

    僅獲取當(dāng)個(gè)文件行數(shù)

    cat tcpSocketSer.py | wc -l

    僅獲取所有文件的總行數(shù)

    find . -type f -exec wc -l {} \; | awk '{sum+=$1}END{print sum}'

    二、awk命令

    6、將某一列的值累加

    cat flowgw_billing.log.201512 | awk '{sum +=$5} END {print sum}'

    7、更改文件列順序

    cat daily_partner_bill.log.20150806 | awk '{print $4"\t"$1"\t"$2"\t"$3}' > test2;mv test2 daily_partner_bill.log.20150806

    比較笨拙的做法,暫時(shí)想不到其他的了。

    8、指定列條件并累加

    cat 201507.log | awk '$2=="hengDa" {sum +=$4} END {print sum}'

    指定條件分開累計(jì)

    cat 201511.log | awk '$3=="selectName" {a[$2]+=$5;} END {for(i in a) print i,a[i]}'

    9、分運(yùn)營(yíng)商初步統(tǒng)計(jì)

    cat 201511??.log | \ awk '$3=="selectName" {a[$2]+=$5;} END {for(i in a) print i,a[i]}' | \ awk --re-interval '{if($1 ~/(133|153|180|181|189|177)[0-9]{8}/) print "CTCC",$1,$2;\ else if($1 ~/(134|135|136|137|138|139|150|151|152|158|159|182|183|184|157|187|188|147|178)[0-9]{8}/) print "CMCC",$1,$2;\ else if($1 ~/(130|131|132|155|156|145|176|185|186|175)[0-9]{8}/) print "CUCC",$1,$2;\ else print "None",$1,$2}END{}'

    三、壓縮文件

    10、不解壓查詢壓縮文件列表

    gzip -dc fff.tar.gz | tar tvf -

    如果壓縮文件內(nèi)帶有文件夾則不行

    11、不解壓查看文件內(nèi)容

    zcat fff.tar.gz | cut -f 2-12

    輸入內(nèi)容會(huì)附帶文件屬性信息,可以用cut -f 按字段截取部分想要的

    12、查詢已打包文件內(nèi)容

    zcat *201504_30*.log | grep --binary-files=text 15360436158 | cut -f 2-11

    若需要匹配文件復(fù)雜,可以使用find命令銜接

    find . -type f -name "201504_30" | xargs zcat {} \; | grep --binary-files=text "15360436158"

    13、將當(dāng)前文件夾所有壓縮文件解壓,并刪除原文件

    for tar in *.tar.gz; do tar xvf $tar; done find ./ -name "*.gz" | xargs rm -rf

    四、排序去重

    由于uniq只是針對(duì)相鄰行去重,所以通常和sort配合使用。

    sort參數(shù)簡(jiǎn)要說明

    -n 按數(shù)值 -k 2 按第二列 -r 反序 -t: 以冒號(hào)分隔

    uniq參數(shù)簡(jiǎn)要說明

    -i  忽略大小寫字符的不同 -c  進(jìn)行計(jì)數(shù) -u  只顯示唯一的行 -d  僅顯示存在重復(fù)的行

    14、查詢累計(jì)用戶數(shù)(每條記錄包含一個(gè)電話號(hào)碼)

    cat 201?????.log | cut -f 1 | sort | uniq | wc -l

    15、查詢非電信累計(jì)用戶數(shù)(添加正則匹配條件)

    cat 201?????.log | cut -f 1 | sort | uniq | egrep -v '^1(33|53|77|8[019]|700).{7,8}$' | wc -l

    五、文件合并

    • 行合并
    • cat file1 file2
    • 列合并
    • paste file1 file2
    • 取文件交集
    • cat file1 file2 | sort | uniq -d
    • 取文件并集
    • cat file1 file2 | sort | uniq

    六、其他

    16、查詢進(jìn)程是否存在

    ps -ef | grep test.py | grep -v grep

    grep本身存在一進(jìn)程,容易誤導(dǎo)

    查詢并殺死進(jìn)程

    ps -ef | grep test.py| grep -v grep | awk '{print $2}' | xargs kill -9

    17、查詢端口占用情況

    lsof -i:65432

    18、查找文件并打包,以當(dāng)前時(shí)間命名

    find ./ -name "*log"| xargs tar -zvcf logs.`date +%Y-%m-%d`

    其中,`date +%Y-%m-%d-%H%M%S`為可嵌入命令時(shí)間格式

    19、在后臺(tái)運(yùn)行程序

    nohup python test.py &

    這種方式運(yùn)行不穩(wěn)定,可以使用Linux下的腳本管理工具supervior來統(tǒng)一管理。

    20、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出

    find ./ -name *.log >& all_result

    21、啟動(dòng)簡(jiǎn)易http服務(wù)器,實(shí)現(xiàn)簡(jiǎn)單的文件訪問

    $ python -m SimpleHTTPServer 8080

    在你想要啟用訪問的目錄下執(zhí)行

    22、格式化json

    我們經(jīng)常需要用curl訪問一個(gè)已存在的接口,但是返回結(jié)果不易查看,可以簡(jiǎn)單格式化

    cat jsonString | python -mjson.tool

    ?


    ?

    LINUX學(xué)習(xí)參考:

    ?http://linuxtools-rst.readthedocs.org/zh_CN/latest/base/index.html

    ?

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/Hughzm/p/5234749.html

    總結(jié)

    以上是生活随笔為你收集整理的日志处理--高效Linux命令整理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。