linux命令行解析 linux命令行解析xml

Linux 命令行展開介紹及示例

???在Linux bash中可以使用命令行展開特性一步完成需要分開成多步完成的操作,達(dá)到事半功倍的效果。在Linux指令參數(shù)位置使用"{}" 將相應(yīng)的參數(shù)括起來,括號(hào)中的參數(shù)以逗號(hào)分隔,然后bash在執(zhí)行這一指令時(shí)會(huì)自動(dòng)將括號(hào)中的內(nèi)容進(jìn)行展開。

在灤平等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)整合營(yíng)銷推廣,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),灤平網(wǎng)站建設(shè)費(fèi)用合理。

示例1:

???同時(shí)創(chuàng)建多個(gè)目錄,在/tmp目錄下創(chuàng)建a_c,a_d,b_c,b_d等目錄,只需要在命令行中執(zhí)行如下命令即可,無須單個(gè)創(chuàng)建:

執(zhí)行結(jié)果如下:

示例2:

???需要在/tmp/mylinux 目錄下創(chuàng)建如下目錄樹。

創(chuàng)建命令如下:

執(zhí)行結(jié)果如下:

在這里可以使用指令tree來查看目錄的層級(jí)結(jié)構(gòu),以更直觀的方式將目錄樹顯示出來:

Linux常用命令詳解 | find

find 命令的基本結(jié)構(gòu)如下:

find 命令手冊(cè) : man find

find 命令中的 -name 選項(xiàng)可以根據(jù)文件名稱進(jìn)行檢索( 區(qū)分大小寫 )。如需要忽略文件名中的大小寫,可以使用 -iname 選項(xiàng)。

-name 和 -iname 兩個(gè)選項(xiàng)都支持 wildcards 。如:

例1:查找 /usr 目錄下所有文件名以 .txt 結(jié)尾的文件

例2:查找 /usr 目錄下所有文件名剛好為 4 個(gè)字符的文件

例3:查以大寫字母開頭的文件

例4:查以兩個(gè)小寫字母和兩個(gè)數(shù)字開頭的txt文件

類似的還有:

-lname -ilname

-path -ipath

-regx -iregx

有些時(shí)候,你需要在搜索時(shí)匹配某個(gè)文件或目錄的 完整路徑 ,而不僅僅是匹配文件名。可以使用 -path 或 -ipath 選項(xiàng)。

例1:如查找 /usr 下所有文件名以 .txt 結(jié)尾的文件或目錄,且該文件的父目錄必須是 src ??梢允褂靡韵旅睿?/p>

例2:在當(dāng)前目錄除aa之外的子目錄內(nèi)搜索 txt文件

例3:在當(dāng)前目錄,不再子目錄中,查找txt文件

如果只想搜索得到文件 或 目錄,即不想它們同時(shí)出現(xiàn)在結(jié)果中??梢允褂? -type 選項(xiàng)指定文件類型。

-type 選項(xiàng)最常用的參數(shù)如下:

例:檢索 /usr 下所有文件名以 python 開頭的目錄

find 命令支持 -empty 選項(xiàng)用來檢索 為空 的文件或目錄??瘴募次募餂]有任何內(nèi)容,空目錄即目錄中沒有任何文件或子目錄。

例:檢索用戶主目錄下所有的空目錄

find 命令也允許用戶對(duì)當(dāng)前的匹配條件進(jìn)行 “反義” (類似于 邏輯非 操作)。

如需要檢索 /usr 下所有文件名 不 以 .txt 為后綴的文件??梢允褂靡韵旅睿?/p>

也可以“翻轉(zhuǎn)”任何其他的篩選條件,如:檢索 /usr 下所有內(nèi)容不為空的文件

為了檢索歸屬于特定用戶的文件或目錄,可以使用 -user 選項(xiàng)。

例:檢索根目錄下所有屬主為 starky 的文件

類似于 -user 選項(xiàng), -group 選項(xiàng)則可以根據(jù)文件或目錄的 屬組 進(jìn)行檢索。

有些時(shí)候,需要根據(jù)文件創(chuàng)建或修改的時(shí)間進(jìn)行檢索。

Linux 系統(tǒng)中,與文件相關(guān)聯(lián)的時(shí)間參數(shù)有以下三種:

與此對(duì)應(yīng)的是 find 命令中的 -mtime , -atime 和 -ctime 三個(gè)選項(xiàng)。

這三個(gè)選項(xiàng)的使用遵循以下示例中的規(guī)則:

檢索 /usr 下兩天前被修改過的文件

如果覺得 -mtime 等選項(xiàng)以 天 為單位時(shí)間有點(diǎn)長(zhǎng),還可以使用 -mmin , -amin , -cmin 三個(gè)選項(xiàng)。

查找比 aa.txt 新 的文件

查找比 aa.txt 舊 的文件

查找比aa.txt新,比bb.txt舊的文件

-size 選項(xiàng)允許用戶通過文件大小進(jìn)行搜索(只適用于文件,目錄沒有大小……)。

表示文件大小的單位由以下字符組成:

另外,還可以使用 + 或 - 符號(hào)表示 大于 或 小于 當(dāng)前條件。

檢索文件大小高于 1 GB 的文件

find 命令可以使用 -perm 選項(xiàng)以文件權(quán)限為依據(jù)進(jìn)行搜索。

9.1使用符號(hào)形式

例1:如需要檢索 /usr 目錄下權(quán)限為 rwxr-xr-x 的文件,可以使用以下命令:

例2:搜索 /usr 目錄下所有權(quán)限為 r-xr-xr-x (即系統(tǒng)中的所有用戶都只有讀寫權(quán)限)的文件和目錄,可以使用以下命令:

很多時(shí)候,我們只想匹配文件權(quán)限的一個(gè) 子集 。比如,檢索可以直接被任何用戶執(zhí)行的文件,即只關(guān)心文件的執(zhí)行權(quán)限,而不用管其讀寫權(quán)限是什么。

上述的需求可以通過以下命令實(shí)現(xiàn):

其中 a=x 前面的 / 符號(hào)即用來表示只匹配權(quán)限的某個(gè)子集(執(zhí)行權(quán)限),而不用關(guān)心其他權(quán)限的具體設(shè)置。

9.2使用數(shù)字形式

例如:搜索 /usr 目錄下權(quán)限為 644 (即 rwxr-xr-x )的文件

find 命令默認(rèn)是以 遞歸 的方式檢索項(xiàng)目的,這有時(shí)候會(huì)導(dǎo)致得到的結(jié)果數(shù)量非常巨大??梢允褂? -maxdepth 限制 find 命令遞歸的層數(shù)。

例如:搜索時(shí)向下遞歸的層數(shù)最大為 3

在之前的例子中有出現(xiàn)多個(gè)搜索條件的 組合 以及對(duì)某個(gè)搜索條件的 反轉(zhuǎn) 。

實(shí)際上 find 命令支持 “and” 和 “or” 兩種邏輯運(yùn)算,對(duì)應(yīng)的命令選項(xiàng)分別是 -a 和 -o 。通過這兩個(gè)選項(xiàng)可以對(duì)搜索條件進(jìn)行更復(fù)雜的組合。

此外還可以使用 小括號(hào) 對(duì)搜索條件進(jìn)行 分組 。注意 find 命令中的小括號(hào)常需要用 單引號(hào) 包裹起來。因小括號(hào)在 Shell 中有特殊的含義。

如檢索 /usr 下文件名以 python 開頭且類型為目錄的文件

該命令等同于:

更復(fù)雜的組合形式如:

例4:在除dir0及子目錄以外的目錄下查找txt后綴文件

說明:-a 應(yīng)該是and的縮寫,意思是邏輯運(yùn)算符‘與’(); -o應(yīng)該是or的縮寫,意思是邏輯運(yùn)算符‘或’(||), -not 表示非.

命令行的意思是:如果目錄dir0存在(即-a左邊為真),則求-prune的值,-prune 返回真,‘與’邏輯表達(dá)式為真(即-path './dir0*' -a -prune 為真),find命令將在除這個(gè)目錄以外的目錄下查找txt后綴文件并打印出來;如果目錄dir0不存在(即-a左邊為假),則不求值-prune ,‘與’邏輯表達(dá)式為假,則在當(dāng)前目錄下查找所有txt后綴文件。

-delete 選項(xiàng)可以用來刪除搜索到的文件和目錄。

例如:刪除 home 目錄下所有的空目錄:

-exec 選項(xiàng)可以對(duì)搜索到的結(jié)果執(zhí)行執(zhí)行該參數(shù)所給出的shell命令。形式為 command {} \; ,注意{}與\;之間有空格 。每當(dāng) find 命令檢索到一個(gè)符合條件的文件,會(huì)使用其完整路徑取代命令中的 {} ,然后執(zhí)行 -exec 后面的命令一次。

例1:如需要將 home 目錄下所有的 MP3 音頻文件復(fù)制到移動(dòng)存儲(chǔ)設(shè)備(假設(shè)路徑是 /media/MyDrive ),可使用下面的命令:

其中的 大括號(hào) ( {} )作為檢索到的文件的 占位符 ,而分號(hào)( ; )作為命令結(jié)束的標(biāo)志。因?yàn)榉痔?hào)是 Shell 中有特殊含義的符號(hào),所以需要使用單引號(hào)括起來或前面加上轉(zhuǎn)義符 \ 。

例2:查看當(dāng)前目錄下的所有普通文件,并在 - exec 選項(xiàng)中使用 ls -l 命令將它們列出

例3:在多個(gè)文件中檢索某個(gè)指定的字符串。如在用戶主目錄下的所有文件中檢索字符串 hello ,可以使用如下命令:

創(chuàng)建 Gzip 格式的壓縮文件的命令為:

現(xiàn)在假設(shè)需要將用戶主目錄下所有的 MP3 文件添加到壓縮包 music.tar.gz 中,直觀的感覺是,其命令應(yīng)為如下形式:

實(shí)際情況是,這樣得到的 music.tar.gz 其實(shí)只包含一個(gè) MP3 文件。原因是 find 命令 每次 發(fā)現(xiàn)一個(gè)音頻文件,都會(huì)再執(zhí)行一次 -exec 選項(xiàng)后面的壓縮命令。導(dǎo)致先前生成的壓縮包被覆蓋。

可以先讓 find 命令檢索出所有符合條件的音頻文件,再將得到的 文件列表 傳遞給后面的壓縮命令。完整的命令如下:

如果想瀏覽搜索到的文件(目錄)的詳細(xì)信息(如權(quán)限和大小等),可以直接使用 -ls 選項(xiàng)。

例如:瀏覽所有 1G 以上大小的文件的詳細(xì)信息

與exec作用相同,區(qū)別在于,在執(zhí)行命令之前,都會(huì)給出提示,讓用戶確認(rèn)是否執(zhí)行

與 exec 作用相同 ,起承接作用。區(qū)別在于 |xargs 主要用于承接刪除操作 ,而 -exec 都可用 如復(fù)制、移動(dòng)、重命名等

例1:查找以ap或may開頭的文件

例2:查硬連接數(shù)大于2的文件或目錄

例3:查找含特定字符串的文件。查找當(dāng)前目錄下含有"the string you want find…"字符串的文件:

例4:從根目錄開始查tmpfile,一旦查到馬上刪除

例5:如何用find查找某一天更改的文件?可以使用這一行命令來實(shí)現(xiàn):

A Guide to the Linux “Find” Command

Linux sed 命令詳解

sed命令行格式:sed [options] 'command' file(s)

options常用選項(xiàng):

-n或--quiet或——silent:僅顯示script處理后的結(jié)果;

-e:以選項(xiàng)中的指定的script來處理輸入的文本文件;

-f:以選項(xiàng)中指定的script文件來處理輸入的文本文件;

-r∶sed 的動(dòng)作支援的是延伸型正規(guī)表示法的語法;

-i∶直接修改讀取的檔案內(nèi)容,而不是由螢?zāi)惠敵?

-h或--help:顯示幫助;

-V或--version:顯示版本信息。

Command常用命令:

a:新增,a 的后面可以接字符串,而這些字符串會(huì)在新的一行出現(xiàn)(目前的下一行);

c:取代,c 的后面可以接字符串,這些字符串可以取代 n1,n2 之間的行;

d:刪除,d 后面通常不接任何字符串;

i:插入,i 的后面可以接字符串,而這些字符串會(huì)在新的一行出現(xiàn)(目前的上一行);

p:列印,亦即將某個(gè)選擇的資料印出。通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)作;

s:取代,可以直接進(jìn)行取代的工作,通常與正規(guī)表達(dá)式搭配使用。

實(shí)例說明:

新增操作:a命令

sed '/^bird/a\test' file將test追加到 以bird開頭的行后面

刪除操作:d命令

sed '/^$/d' file #刪除空白行;

sed '2d' file #刪除第二行;

sed '2,$d' file #刪除第2行到最后一行;

sed '$d' file #刪除最后一行;

sed '/^bird/'d file #刪除所有開頭是bird的行;

插入操作:i命令

sed -i '3i\bird ' bird.conf #在bird.conf文件第3行之前插入bird

替換文本中的字符串:s命令

sed 's/bird/birds/' file #將文本中的bird替換成birds;

sed -i 's/ bird / birds /g' file #將file文件中每一行的第一個(gè)bird替換為birds;

Linux常見日志統(tǒng)計(jì)分析命令

在上文中,我們已經(jīng)詳細(xì)介紹 linux 三劍客的基本使用,接下來我們看看具體在性能測(cè)試領(lǐng)域的運(yùn)用,本文主要介紹的是在 Tomcat 和 Nginx access日志的統(tǒng)計(jì)分析。

server.xml 使用配置方式,%D-請(qǐng)求時(shí)間,%F-響應(yīng)時(shí)間

字段說明如下:

日志樣例:

使用默認(rèn) combined 的經(jīng)典格式上擴(kuò)展 response_timeupstream_response_time

nginx.conf 使用配置方式:

字段說明如下:

日志示例:

為了能理解 AWK 程序,我們下面概述其基本知識(shí)。

模式( pattern ) 用于匹配輸入中的每行文本。對(duì)于匹配上的每行文本,awk 都執(zhí)行對(duì)應(yīng)的 動(dòng)作( action )。模式和動(dòng)作之間使用花括號(hào)隔開。awk 順序掃描每一行文本,并使用 記錄分隔符(一般是換行符)將讀到的每一行作為 記錄,使用 域分隔符( 一般是空格符或制表符 ) 將一行文本分割為多個(gè) 域, 每個(gè)域分別可以使用 2, … 表示。1 表示第一個(gè)域,表示第二個(gè)域,n 表示第 n 個(gè)域。 $0 表示整個(gè)記錄。模式或動(dòng)作都可以不指定,缺省模式的情況下,將匹配所有行。缺省動(dòng)作的情況下,將執(zhí)行動(dòng)作 {print},即打印整個(gè)記錄。

此處使用Nginx access.log 舉例,Tomcat 日志自己舉一反三。 使用 awk 分解出Nginx access日志中的信息

以此類推…… 當(dāng)我們使用默認(rèn)的域分割符時(shí),我們可以從日志中解析出下面不同類型的信息:

我們不難發(fā)現(xiàn),僅使用默認(rèn)的域分隔符,不方便解析出請(qǐng)求行、引用頁和瀏覽器類型等其他信息,因?yàn)檫@些信息之中包含不確定個(gè)數(shù)的空格。 因此,我們需要把域分隔符修改為 “ ,就能夠輕松讀出這些信息。

注意:這里為了避免 Linux Shell 誤解 “ 為字符串開始,我們使用了反斜杠,轉(zhuǎn)義了 “ 。 現(xiàn)在,我們已經(jīng)掌握了 awk 的基本知識(shí),以及它是怎樣解析日志的。

此處使用Nginx access.log 舉例,Tomcat 日志自己舉一反三。

如果我們想知道那些類型的瀏覽器訪問過網(wǎng)站,并按出現(xiàn)的次數(shù)倒序排列,我可以使用下面的命令:

此命令行首先解析出瀏覽器域,然后使用管道將輸出作為第一個(gè) sort 命令的輸入。第一個(gè) sort 命令主要是為了方便 uniq 命令統(tǒng)計(jì)出不同瀏覽器出現(xiàn)的次數(shù)。最后一個(gè) sort 命令將把之前的統(tǒng)計(jì)結(jié)果倒序排列并輸出。

我們可以使用下面的命令行,統(tǒng)計(jì)服務(wù)器返回的狀態(tài)碼,發(fā)現(xiàn)系統(tǒng)可能存在的問題。

正常情況下,狀態(tài)碼 200 或 30x 應(yīng)該是出現(xiàn)次數(shù)最多的。40x 一般表示客戶端訪問問題。50x 一般表示服務(wù)器端問題。 下面是一些常見的狀態(tài)碼:

HTTP 協(xié)議狀態(tài)碼定義可以參閱:

查找并顯示所有狀態(tài)碼為 404 的請(qǐng)求

統(tǒng)計(jì)所有狀態(tài)碼為 404 的請(qǐng)求

現(xiàn)在我們假設(shè)某個(gè)請(qǐng)求 ( 例如 : URI: /path/to/notfound ) 產(chǎn)生了大量的 404 錯(cuò)誤,我們可以通過下面的命令找到這個(gè)請(qǐng)求是來自于哪一個(gè)引用頁,和來自于什么瀏覽器。

有時(shí)候會(huì)發(fā)現(xiàn)其他網(wǎng)站出于某種原因,在他們的網(wǎng)站上使用保存在自己網(wǎng)站上的圖片。如果您想知道究竟是誰未經(jīng)授權(quán)使用自己網(wǎng)站上的圖片,我們可以使用下面的命令:

注意:使用前,將 修改為自己網(wǎng)站的域名。

統(tǒng)計(jì)共有多少個(gè)不同的 IP 訪問:

統(tǒng)計(jì)每一個(gè) IP 訪問了多少個(gè)頁面:

將每個(gè) IP 訪問的頁面數(shù)進(jìn)行從小到大排序:

統(tǒng)計(jì) 2018 年 8 月 31 日 14 時(shí)內(nèi)有多少 IP 訪問 :

統(tǒng)計(jì)訪問最多的前十個(gè) IP 地址

查看某一個(gè) IP訪問了哪些頁面:

統(tǒng)計(jì)某個(gè) IP 的詳細(xì)訪問情況,按訪問頻率排序

列出傳輸大小最大的幾個(gè)文件

列出輸出大于 204800 byte ( 200kb) 的頁面以及對(duì)應(yīng)頁面發(fā)生次數(shù)

列出訪問最頻的頁面(TOP100)

列出訪問最頻的頁面([排除php頁面】(TOP100)

列出頁面訪問次數(shù)超過100次的頁面

列出最近1000條記錄,訪問量最高的頁面

統(tǒng)計(jì)每分鐘的請(qǐng)求數(shù),top100的時(shí)間點(diǎn)(精確到分鐘)

統(tǒng)計(jì)每小時(shí)的請(qǐng)求數(shù),top100的時(shí)間點(diǎn)(精確到小時(shí))

統(tǒng)計(jì)每秒的請(qǐng)求數(shù),top100的時(shí)間點(diǎn)(精確到秒)

統(tǒng)計(jì)當(dāng)天的 pv

說明:

可以使用下面的命令統(tǒng)計(jì)出所有響應(yīng)時(shí)間超過 3 秒的日志記錄。

注意:NF 是當(dāng)前記錄中域的個(gè)數(shù)。$NF 即最后一個(gè)域。

列出php頁面請(qǐng)求時(shí)間超過3秒的頁面,并統(tǒng)計(jì)其出現(xiàn)的次數(shù),顯示前100條

列出相應(yīng)時(shí)間超過 5 秒的請(qǐng)求,顯示前20條

統(tǒng)計(jì)蜘蛛抓取次數(shù)

統(tǒng)計(jì)蜘蛛抓取404的次數(shù)

通過本文的介紹,我相信同學(xué)們一定會(huì)發(fā)現(xiàn) linux三劍客強(qiáng)大之處。在命令行中,它還能夠接受,和執(zhí)行外部的 AWK 程序文件,可以對(duì)文本信息進(jìn)行非常復(fù)雜的處理,可以說“只有想不到的,沒有它做不到的”。

文章名稱:linux命令行解析 linux命令行解析xml
文章網(wǎng)址:http://www.muchs.cn/article12/ddehhdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)響應(yīng)式網(wǎng)站、自適應(yīng)網(wǎng)站、外貿(mào)建站、手機(jī)網(wǎng)站建設(shè)移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管