丝袜人妻一区二区三区_少妇福利无码视频_亚洲理论片在线观看_一级毛片国产A级片

當(dāng)前位置:首頁(yè) > 汽車

【奧迪死鎖怎么解除】開(kāi)發(fā)必備linux命令大全-穩(wěn)賺不虧

戴爾服務(wù)通常在Linux系統(tǒng)上運(yùn)行,因此需要了解Linux命令。

接下來(lái)將一一詳細(xì)介紹一些常用的linux的命令

  • 文件操作
  • 遠(yuǎn)程登錄與操作
  • 磁盤(pán)掛載
  • 進(jìn)程管理 啟動(dòng)和結(jié)束
  • 系統(tǒng)性能參數(shù)查看
  • 網(wǎng)絡(luò)數(shù)據(jù)抓取
  • shell 腳本命令
  • jvm 常用命令

1 文件操作命令

find

  • find 用于在指定目錄下查找文件或子目錄,如果不指定查找目錄,則在當(dāng)前目錄下查找
  • 命令格式:·find path -option [-print] [ -exec/-ok command {} \ ] ; print: 將匹配的文件輸出到標(biāo)準(zhǔn)輸出 exec:對(duì)匹配的文件作為參數(shù) 讓 command 命令執(zhí)行。{} 是匹配文件的占位符 ok: 和 exec 的作用相同,但在執(zhí)行命令之前,會(huì)給出提示,讓用戶來(lái)確定是否執(zhí)行
常用的option 選項(xiàng) | 描述 -mount | 只檢查和指定目錄在同一個(gè)文件系統(tǒng)下的文件,避免列出其它文件系統(tǒng)中的文件 -amin n | 在過(guò)去 n 分鐘內(nèi)被讀取過(guò) -atime n | 在過(guò)去 n 天內(nèi)被讀取過(guò)的文件 -cmin n | 在過(guò)去 n 分鐘內(nèi)被修改過(guò) -ctime n | 在過(guò)去n天內(nèi)被修改過(guò)的文件 -gid n | gid 是 n 文件?;?-group name, group 名稱是 name 的文件 -pid n | pid 是 n 的文件 -ipath p | 路徑名稱符合 p 的文件?;?-path p,ipath 會(huì)忽略大小寫(xiě) -name name | 文件名稱符合 name 的文件?;蛘?iname name,iname 會(huì)忽略大小寫(xiě) -size n | 文件大小 是 n 單位,b 代表 512 位元組的區(qū)塊,c 表示字元數(shù),k 表示 kilo bytes,w 是二個(gè)位元組 -type c | 文件類型是c的文件。 d: 目錄;f: 一般文件;l: 符號(hào)連結(jié);s: socket 復(fù)制代碼
  • find 示例
~~ 查找 /var/log 目錄中更改時(shí)間在 7 日以前的普通文件,并在刪除之前詢問(wèn)它們 # find /var/log -type f -mtime +7 -ok rm {} \; 復(fù)制代碼

touch 和 vim

  • touch 可用于創(chuàng)建一個(gè)空文件,如果文件存在,則會(huì)更改文件的訪問(wèn)時(shí)間和修改時(shí)間
  • touch 示例
~~ #創(chuàng)建一個(gè)名為“FILE”的新的空白文件,如果存在則會(huì)修改其時(shí)間屬性 # touch file 復(fù)制代碼
  • vim Vim是從 vi 發(fā)展出來(lái)的一個(gè)文本編輯器,是在 linux 系統(tǒng)交互界面進(jìn)行文件查看,編寫(xiě)文本的首選工具
  • vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)
1 命令模式:用戶 vim fileName,便進(jìn)入了命令模式 i 切換到輸入模式,以輸入字符 : 冒號(hào)切換到底線命令模式 /word 向光標(biāo)之下尋找一個(gè)名稱為 word 的字符串 ?word 向光標(biāo)之上尋找一個(gè)字符串名稱為 word 的字符串 n 重復(fù)前一個(gè)搜索(與 / 或 ? 有關(guān)) N 反向重復(fù)前一個(gè)搜索(與 / 或 ? 有關(guān)) PageUp 上翻頁(yè) PageDown 下翻頁(yè) G 移動(dòng)到這個(gè)檔案的最后一行(常用) nG n 為數(shù)字。移動(dòng)到這個(gè)檔案的第 n 行 2 輸入模式: 在命令模式下按下i就進(jìn)入了輸入模式; ESC 退出輸入模式,切換到命令模式 字符按鍵、shift組合 輸入字符 Enter 回車鍵,換行 BACK SPACE 退格鍵,刪除光標(biāo)前一個(gè)字符 DEL 刪除鍵,刪除光標(biāo)后一個(gè)字符 方向鍵 在文本中移動(dòng)光標(biāo) HOME/END 移動(dòng)光標(biāo)到行首/行尾 Page Up/Page Down 上/下翻頁(yè) Insert 切換光標(biāo)為輸入/替換模式,光標(biāo)將變成豎線/下劃線 3 底線命令模式: 在命令模式下按下 ":" 就進(jìn)入了底線命令模式; ESC退出模式,切換到命令模式 :q 退出 vim 程序 :w 保存文件 :wq 保存后離開(kāi) :!q 不保存退出 :w [filename] 將編輯的數(shù)據(jù)儲(chǔ)存成另一個(gè)檔案 :r [filename] 在編輯的數(shù)據(jù)中,讀入另一個(gè)檔案的數(shù)據(jù)。追加到游標(biāo)所在行后面 :!ShellCommand 暫時(shí)離開(kāi) vi 到指令行模式下執(zhí)行 shellCommand 的顯示結(jié)果 :%s/word1/word2/g 從第一行到最后一行尋找 word1 字符串,并將該字符串取代為 word2 :%s/word1/word2/gc 和 %s/word1/word2/g 功能一致,不過(guò)每次替換都需用戶確認(rèn) 復(fù)制代碼

less、cat、more、tail 和 head

  • less 是linux 必不可少的查看文件工具,功能極其強(qiáng)大
less [option] 文件 option 常用參數(shù) -f 強(qiáng)制打開(kāi)文件,二進(jìn)制文件顯示時(shí),不提示警告; -i 搜索時(shí)忽略大小寫(xiě);除非搜索串中包含大寫(xiě)字母; -I 搜索時(shí)忽略大小寫(xiě),除非搜索串中包含小寫(xiě)字母; -m 顯示讀取文件的百分比; -M 顯法讀取文件的百分比、行號(hào)及總行數(shù); -N 在每行前輸出行號(hào); -p pattern 搜索 pattern;比如在/etc/profile搜索單詞MAIL,就用 less -p MAIL /etc/profile -s 把連續(xù)多個(gè)空白行作為一個(gè)空白行顯示; 復(fù)制代碼
  • less 文件后可進(jìn)行的動(dòng)作操作和 vim 在命令模式下的操作相似;less在查看文本時(shí)的常用動(dòng)作命令如下
Enter 向下移動(dòng)一行 y 向上移動(dòng)一行 Space 向下滾動(dòng)一屏 b 向上滾動(dòng)一屏 d 向下滾動(dòng)半屏 u 向上滾動(dòng)半屏 g 跳到第一行 G 跳到最后一行 /pattern 向下搜索pattern ,比如 /MAIL 表示在文件中搜索MAIL單詞 ?pattern 向上搜索pattern n 重復(fù)前一個(gè)搜索(與 / 有關(guān)) N 反向重復(fù)前一個(gè)搜索(與 / 有關(guān)) v 調(diào)用 vi 編輯器 q 退出 less !command 調(diào)用 shell 命令;比如 !ls 顯示當(dāng)前目錄下的所有文件 復(fù)制代碼
  • more 常用于顯示輸出的內(nèi)容,然后根據(jù)窗口的大小進(jìn)行分頁(yè)顯示,然后還能提示文件的百分比。命令格式:more 文件,more 常用操作指令如下
Enter 向下n行,需要定義,默認(rèn)為1行; Ctrl+f 向下滾動(dòng)一屏 空格鍵 向下滾動(dòng)一屏 Ctrl+b 返回上一屏 = 輸出當(dāng)前行的行號(hào) :f 輸出文件名和當(dāng)前行的行號(hào) v 當(dāng)我們查看某一文件時(shí),想調(diào)用vi來(lái)編輯它,用 v 動(dòng)作指令 !command 調(diào)用 shell,并執(zhí)行command命令 q 退出 more 復(fù)制代碼
  • cat 常用于連接文件并打印到標(biāo)準(zhǔn)輸出設(shè)備上,也可用于查看文件。格式: cat fileName [| command ] ,command 默認(rèn)是 echo,cat會(huì)一次性顯示整個(gè)文件的內(nèi)容,不分頁(yè)
  • head 是顯示一個(gè)文件的內(nèi)容的前多少行;常用命令格式:head -n 行數(shù)值 文件名
  • tail 是顯示一個(gè)文件的內(nèi)容的后多少行;常用命令格式:tail -n 行數(shù)值 文件名

grep、zgrep

  • grep 一般用于在文件中查和匹配模式匹配的每一行數(shù)據(jù)。命令格式 grep [options] 'pattern' [files];grep 支持處理管道的輸出數(shù)據(jù); pattern 支持正則表達(dá)式;files 可以是多個(gè)文件,用空格分開(kāi)
  • grep 無(wú)法在壓縮文件匹配查找數(shù),此時(shí)可以用 zgrep,zgrep 適用處理壓縮后的gz等格式文件
options選項(xiàng) | 功能描述 -i | 忽略大小寫(xiě) -v | 不匹配匹配的 -l | 輸出匹配的文件名 -L | 輸出不匹配的文件名 -c | 輸出匹配的數(shù)目(行數(shù)) -C num | 輸出匹配的前后 num 條行數(shù) -n | 輸出匹配行的同時(shí)在前面加上文件名及在文件名中的行數(shù) 復(fù)制代碼
  • grep 和 zgrep 示例
~~ 輸出匹配 lwl 數(shù)據(jù),及前后十行 # grep -C 10 'lwl' log.txt 復(fù)制代碼

cp

  • 文件目錄復(fù)制可用使用 cp 命令。cp 格式:cp [選項(xiàng)參數(shù)] fileSource... fileTarget
cp 選項(xiàng)參數(shù) | 描述 -a | 此選項(xiàng)通常在復(fù)制目錄時(shí)使用,它保留鏈接、文件屬性,并復(fù)制目錄下的所有內(nèi)容 -r | 若給出的源文件是一個(gè)目錄文件,此時(shí)將復(fù)制該目錄下所有的子目錄和文件 -f | 覆蓋已經(jīng)存在的目標(biāo)文件而不給出提示。 -i | 與 -f 選項(xiàng)相反,在覆蓋目標(biāo)文件之前給出提示,要求用戶確認(rèn)是否覆蓋,回答 y 時(shí)目標(biāo)文件將被覆蓋 -l | 不復(fù)制文件,只是生成鏈接文件 復(fù)制代碼
  • cp 示例
~~ 將當(dāng)前目錄 csc/ 下的所有文件復(fù)制到新目錄 lwl 下 # cp –r csc/ lwl 復(fù)制代碼

mv

  • mv 可用來(lái)移動(dòng)文件夾、文件 或者 修改文件名、目錄名
option 參數(shù) | 描述 -b | 當(dāng)目標(biāo)文件存在時(shí),先進(jìn)行備份再覆蓋 -f | 當(dāng)目標(biāo)文件存在時(shí),強(qiáng)制覆蓋 -i | 默認(rèn)選項(xiàng),當(dāng)目標(biāo)文件存在時(shí),提示是否覆蓋 -t | 先指定目標(biāo),再指定源目標(biāo)。即目標(biāo) 和 源目標(biāo) 參數(shù)位置互換 復(fù)制代碼
  • mv 示例
~~ 把 c 修改名字為 lwl.txt # mv c lwl.txt ~~ 將 csc 目錄下的文件移到 lwl 下 # mv csc/ lwl 復(fù)制代碼

rm

  • rm 命令用于刪除一個(gè)文件或者目錄;命令格式 rm [options] fileName/filePath
option參數(shù) | 描述 -i | 刪除前逐一詢問(wèn)確認(rèn) -f | 即使原檔案屬性設(shè)置為只讀,也可強(qiáng)制刪除,無(wú)需確認(rèn) -r | 將目錄及以下之檔案亦逐一刪除 復(fù)制代碼
  • rm 示例
~~ 刪除文件名 # rm -rf 復(fù)制代碼

mdkir

  • mdkir命令用于創(chuàng)建目錄, mkdir [-p] dirName; -p 確保目錄名稱存在,不存在的就建一個(gè)

tar 和 jar

  • tar 的命令格式:tar [-option] fileName/filePath;tar具有打包和壓縮功能,普通文件和文件夾可以被打包成 xxx.tar,如果要壓縮,則是在打包之后再壓縮,格式是 xxx.
tar [-cxtzjvfpPN] 文件與目錄 常用參數(shù):描述 -c :建立一個(gè)壓縮文件 -x :解開(kāi)一個(gè)壓縮文件 -t :查看tarfile 里面的文件!特別注意,c/x/t 僅能存在一個(gè),不可同時(shí)存在 -z :用 gzip 解壓縮 -j :用 bzip2 解壓縮 -v :壓縮的過(guò)程中顯示文件,這個(gè)常用,但不建議用 -f :使用檔名,在 f 之后要立即接檔名!例如使用『 tar -zcfv tfile sfile』就是錯(cuò)誤的寫(xiě)法,要寫(xiě)成 『tar -zcvf tfile sfile』才對(duì)喔 -p :使用原文件的原來(lái)屬性(屬性不會(huì)依據(jù)使用者而變) -P :(大寫(xiě)P)使用絕對(duì)路徑來(lái)壓縮 -r : 新增文件到已存在的備份文件的結(jié)尾部分 -N :比后面接的日期(yyyy/mm/dd)還要新的才會(huì)被打包進(jìn)新建的文件中 --exclude file :在壓縮的過(guò)程中,不要將 FILE 打包 復(fù)制代碼
  • tar 示例
~~ 打包不壓縮:/home/lwl 目錄 # tar -cvf lwl.tar /home/lwl ~~ 打包并壓縮:/home/lwl 目錄 # tar zcvf lwl. /home/lwl ~~ 解壓 lwl. # tar zxvf lwl. ~~ 壓縮 lwl.java 為 bz2 格式 # tar jcvf lwl. lwl.java ~~ 解壓 lwl. # tar jxvf lwl. ~~ 解壓部分文件 log2021.log # tar -zxvf log. log2021.log 復(fù)制代碼
  • jar 的命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目錄](méi) fileName;其中{ ctxu }這四個(gè)選項(xiàng)必須選其一。[ v f m e 0 M i ]是可選選項(xiàng),文件名是必須的
jar {c t x u f }[ v m e 0 M i ][-C 目錄](méi) fileName jar 的選項(xiàng)參數(shù)和 tar 差不多,如下 -c :創(chuàng)建一個(gè)jar包 -t :顯示jar中的內(nèi)容列表 -x :解壓jar包 -u :添加文件到j(luò)ar包中 -f :指定jar包的文件名 -v :生成詳細(xì)的報(bào)造,并輸出至標(biāo)準(zhǔn)設(shè)備 -m :指定mani文件.(mani 文件中可以對(duì)jar包及其中的內(nèi)容作一些一設(shè)置) -0 :產(chǎn)生jar包時(shí)不對(duì)其中的內(nèi)容進(jìn)行壓縮處理 -M :不產(chǎn)生所有文件的清單文件(Mani)。這個(gè)參數(shù)會(huì)忽略掉 -m 參數(shù)的設(shè)置 -i :為指定的jar文件創(chuàng)建索引文件 -C :表示轉(zhuǎn)到相應(yīng)的目錄下執(zhí)行jar命令,相當(dāng)于cd到那個(gè)目錄,然后不帶-C執(zhí)行jar命令 復(fù)制代碼
  • jar 示例
~~ 利用hello目錄創(chuàng)建 包,并顯示創(chuàng)建過(guò)程 # jar cvf hello ~~ 往 jar 包添加文件,將 HelloWorld.java 添加到 包中 # jar uf HelloWorld.java ~~ 解壓 至當(dāng)前目錄 # jar xvf 復(fù)制代碼

chmod

  • chmod 是控制用戶對(duì)文件的權(quán)限的命令, 命令格式: chmod [-cfvR] mode file
## -cfvR 參數(shù)解析 -c : 若該文件權(quán)限確實(shí)已經(jīng)更改,才顯示其更改動(dòng)作 -f : 若該文件權(quán)限無(wú)法被更改也不要顯示錯(cuò)誤訊息 -v : 顯示權(quán)限變更的詳細(xì)資料 -R : 對(duì)目前目錄下的所有文件與子目錄進(jìn)行相同的權(quán)限變更(即以遞歸的方式逐個(gè)變更) ## mode [ugoa][+-=][rwxX-] 參數(shù)解析 u 表示該文件的擁有者 g 表示與該文件的擁有者屬于同一個(gè)群體(group)者 o 表示其他以外的人 a 包扣 u g o ## [+-=] + 表示增加權(quán)限 - 表示取消權(quán)限 = 表示唯一設(shè)定權(quán)限 ## [rwxX-] r 表示可讀取 w 表示可寫(xiě)入 x 表示可執(zhí)行 X 只有當(dāng)文件為目錄文件,或者其他類型的用戶有可執(zhí)行權(quán)限時(shí),才將文件權(quán)限設(shè)置可執(zhí)行 - 不具任何權(quán)限 復(fù)制代碼
  • chmod 示例
1 命令模式:用戶 vim fileName,便進(jìn)入了命令模式 i 切換到輸入模式,以輸入字符 : 冒號(hào)切換到底線命令模式 /word 向光標(biāo)之下尋找一個(gè)名稱為 word 的字符串 ?word 向光標(biāo)之上尋找一個(gè)字符串名稱為 word 的字符串 n 重復(fù)前一個(gè)搜索(與 / 或 ? 有關(guān)) N 反向重復(fù)前一個(gè)搜索(與 / 或 ? 有關(guān)) PageUp 上翻頁(yè) PageDown 下翻頁(yè) G 移動(dòng)到這個(gè)檔案的最后一行(常用) nG n 為數(shù)字。移動(dòng)到這個(gè)檔案的第 n 行 2 輸入模式: 在命令模式下按下i就進(jìn)入了輸入模式; ESC 退出輸入模式,切換到命令模式 字符按鍵、shift組合 輸入字符 ENTER 回車鍵,換行 BACK SPACE 退格鍵,刪除光標(biāo)前一個(gè)字符 DEL 刪除鍵,刪除光標(biāo)后一個(gè)字符 方向鍵 在文本中移動(dòng)光標(biāo) HOME/END 移動(dòng)光標(biāo)到行首/行尾 Page Up/Page Down 上/下翻頁(yè) Insert 切換光標(biāo)為輸入/替換模式,光標(biāo)將變成豎線/下劃線 3 底線命令模式: 在命令模式下按下 ":" 就進(jìn)入了底線命令模式; ESC退出模式,切換到命令模式 :q 退出 vim 程序 :w 保存文件 :wq 保存后離開(kāi) :!q 不保存退出 :w [filename] 將編輯的數(shù)據(jù)儲(chǔ)存成另一個(gè)檔案 :r [filename] 在編輯的數(shù)據(jù)中,讀入另一個(gè)檔案的數(shù)據(jù)。追加到游標(biāo)所在行后面 :!ShellCommand 暫時(shí)離開(kāi) vi 到指令行模式下執(zhí)行 shellCommand 的顯示結(jié)果 :%s/word1/word2/g 從第一行到最后一行尋找 word1 字符串,并將該字符串取代為 word2 :%s/word1/word2/gc 和 %s/word1/word2/g 功能一致,不過(guò)每次替換都需用戶確認(rèn) 復(fù)制代碼

ln

  • 命令格式:ln [options] [源文件或目錄](méi) [目標(biāo)文件或目錄](méi);當(dāng)我們需要在不同的目錄,用到相同的文件時(shí),又不想浪費(fèi)空間復(fù)制相同的文件,可以用ln 鏈接它,相當(dāng)創(chuàng)建一個(gè)快捷圖標(biāo)
options 參數(shù) | 描述 -b | 刪除,覆蓋以前建立的鏈接 -d | 允許超級(jí)用戶制作目錄的硬鏈接 -f | 強(qiáng)制執(zhí)行 -i | 交互模式,文件存在則提示用戶是否覆蓋 -n | 把符號(hào)鏈接視為一般目錄 -s | 軟鏈接(符號(hào)鏈接) 復(fù)制代碼
  • 軟鏈接: 以路徑的形式存在。類似于Windows操作系統(tǒng)中的快捷方式;可以對(duì)一個(gè)不存在的文件名進(jìn)行鏈接;可以對(duì)目錄進(jìn)行鏈接;軟鏈接可以 跨文件系統(tǒng) ,硬鏈接不可以
  • 硬鏈接: 以文件副本的形式存在。但不占用實(shí)際空間;不允許給目錄創(chuàng)建硬鏈接;硬鏈接只有在同一個(gè)文件系統(tǒng)中才能創(chuàng)建
  • ln 示例
~~ 給文件創(chuàng)建軟鏈接,log2021.log文件創(chuàng)建軟鏈接log2021,如果log2021.log丟失,log2021將失效 # ln -s log2021.log link2021 復(fù)制代碼

2 遠(yuǎn)程登錄與操作

ssh

  • linux下的ssh服務(wù)是一個(gè)守護(hù)進(jìn)程(demon),ssh 服務(wù)端的進(jìn)程名為 sshd ,負(fù)責(zé)實(shí)時(shí)監(jiān)聽(tīng)客戶端的請(qǐng)求(默認(rèn)22端口),包括公共秘鑰等交換等信息。ssh的客戶端可以用 xShell,Securecrt, Mobaxterm等工具進(jìn)行連接,也可以在 linux 命令窗口使用 ssh 命令連接 ssh 服務(wù)端
  • 命令格式:ssh [-p port] user@remoteIp 或者 ssh [-p port] user@remoteIp shellCommand ; 會(huì)提示輸入密碼
  • ssh示例
~~ 登錄 192.168.25.137 ,并執(zhí)行 ls /backup/data # ssh root@192.168.25.137 ls /backup/data 復(fù)制代碼

sftp

  • 登錄sftp服務(wù)器 sftp -oPort=23 user@remoteIp
~~ 上傳,第一個(gè)目錄是本機(jī)的, 第二個(gè)參數(shù)遠(yuǎn)端的 > put /etc/hosts /home/lwl ~~ 下載,第一個(gè)目錄是遠(yuǎn)端的, 第二個(gè)參數(shù)是本機(jī)的 > get /home/lwl /home/csc 復(fù)制代碼

scp

  • 如果是涉及不同linux系統(tǒng)間的文件復(fù)制則用 scp, 格式: scp [options] fileSource fileTarget
options 選項(xiàng)參數(shù) | 描述 -P | port:注意是大寫(xiě)的P, port是指定數(shù)據(jù)傳輸用到的端口號(hào) -p | 保留原文件的修改時(shí)間,小寫(xiě)p,訪問(wèn)時(shí)間和訪問(wèn)權(quán)限 -r | 遞歸復(fù)制整個(gè)目錄 -C | 允許壓縮。(將-C標(biāo)志傳遞給ssh,從而打開(kāi)壓縮功能) 復(fù)制代碼
  • scp 示例
~~ 從本地復(fù)制到遠(yuǎn)程 ~~ A 格式: scp localFile username@remoteIp:filePath; B 格式:scp localFile remoteIp:filePath ~~ A 命令指定了用戶名,但命令執(zhí)行后需要輸入密碼,B 格式則需要輸入用戶名和密碼 # scp -r /home/lwl/ root@www.c ~~ 從遠(yuǎn)程復(fù)制到本地 ~~ 格式:scp remoteIp:filePath localFile # scp -r www.c /home/lwl/ 復(fù)制代碼

文件同步 rsync

  • 與其他文件傳輸工具(如 FTP 或 scp)不同,和 scp 功能類似。 rsync 的最大特點(diǎn)是會(huì)檢查發(fā)送方和接收方已有的文件
# rsync -r source destination 復(fù)制代碼

linux與客戶端的上傳下載命令:rz、sz

  • 用 ssh 管理 linux 服務(wù)器時(shí)經(jīng)常需要遠(yuǎn)程與 win 本地之間交互文件。直接用SecureCRT自帶的上傳下載功能無(wú)疑是最方便的。上傳:rz、下載:sz
  • 在 window 上使用SecureCRT、XShell 軟件,用 rz、sz 進(jìn)行上傳下載
~~ 上傳文件到linux;彈出SecureCRT上傳窗口,用SecureCRT來(lái)上傳 # rz ~~ 下載文件到客戶端(window) # sz filename 復(fù)制代碼

3 磁盤(pán)掛載

df

  • df 用于查看磁盤(pán)空間占用情況:df [-options] [file]
options 參數(shù)解釋 -i 顯示inode信息 -h 方便閱讀方式顯示 -k 區(qū)塊為1024字節(jié) -m 區(qū)塊為1048576字節(jié) -a 全部文件系統(tǒng)列表 -T 顯示文件系統(tǒng)類型 -t<文件系統(tǒng)類型> 只顯示選定文件系統(tǒng)的磁盤(pán)信息 -x<文件系統(tǒng)類型> 不顯示選定文件系統(tǒng)的磁盤(pán)信息 復(fù)制代碼
  • df 示例
# df -hT 文件系統(tǒng) 類型 容量 已用 可用 已用% 掛載點(diǎn) devtmpfs devtmpfs 63G 0 63G 0% /dev tmpfs tmpfs 63G 0 63G 0% /dev/shm tmpfs tmpfs 63G 4.1G 59G 7% /run tmpfs tmpfs 63G 0 63G 0% /sys/fs/cgroup 復(fù)制代碼

mount

  • mount 命令是經(jīng)常會(huì)使用到的命令,它用于掛載Linux系統(tǒng)外的文件
命令格式:mount [-t vfstype] [-o options] device dir 1、-t vfstype 指定文件系統(tǒng)的類型,通常不必指定,mount 會(huì)自動(dòng)選擇正確的類型 iso9660 : 光盤(pán)或光盤(pán)鏡像 msdos : DOS fat16文件系統(tǒng) vfat : Windows 9x fat32文件系統(tǒng) ntfs : Windows NT ntfs文件系統(tǒng) smbfs : Mount Windows文件網(wǎng)絡(luò)共享 nfs :UNIX(LINUX) 文件網(wǎng)絡(luò)共享 2、-o options 主要用來(lái)描述設(shè)備或檔案的掛接方式 loop :用來(lái)把一個(gè)文件當(dāng)成硬盤(pán)分區(qū)掛接上系統(tǒng) ro :采用只讀方式掛接設(shè)備 rw :采用讀寫(xiě)方式掛接設(shè)備 iocharset :指定訪問(wèn)文件系統(tǒng)所用字符集 3、device 要掛接(mount)的設(shè)備 4、dir設(shè)備在系統(tǒng)上的掛接點(diǎn)(mount point) 復(fù)制代碼
  • mount 示例
~~ 1 掛接U盤(pán),/dev/sdd1 是 U 盤(pán)里的磁盤(pán)分區(qū) # mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb ~~ 2 掛接Windows文件共享 ~~ administrator 和 pldy123 是ip地址為10.140.133.23 windows計(jì)算機(jī)的一個(gè)用戶名和密碼,c$是這臺(tái)計(jì)算機(jī)的一個(gè)磁盤(pán)共享 # mount -t smbfs -o username=administrator,password=pldy123 $ /mnt/samba ~~ 3 linux 掛接(mount)其他linux系統(tǒng) NFS 共享 /export/home/sunky 10.140.133.23(rw) ~~ 在服務(wù)端 /etc/exports文件配置共享目錄 ~~ 在服務(wù)端啟動(dòng) nfs 服務(wù) /etc start 啟動(dòng)NFS服務(wù) /etc stop 停止NFS服務(wù) ~~ linux 客戶端掛接 NFS 共享 # mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs 復(fù)制代碼

4 進(jìn)程管理 啟動(dòng)和結(jié)束

systemctl 和 service

  • service 命令本身是一個(gè)shell腳本,它會(huì)在 /etc 目錄查找指定的服務(wù)腳本,然后調(diào)用該服務(wù)腳本來(lái)完成任務(wù);service命令用于對(duì)系統(tǒng)服務(wù)進(jìn)行管理,比如啟動(dòng)(start)、停止(stop)、重啟(restart)、查看狀態(tài)(status)等。命令格式:service 服務(wù)名 [start|stop|restart|reload|status]
~~ service 命令: 停止、啟動(dòng)、查看 redis服務(wù) # service redis stop ~~ 等于在 /etc 目錄下運(yùn)行 ./redis stop # service redis start ~~ 等于在 /etc 目錄下運(yùn)行 ./redis start # service redis status ~~ 等于在 /etc 目錄下運(yùn)行 ./redis status 復(fù)制代碼
  • systemctl 命令兼容了 service 命令,且包含其他更強(qiáng)大功能
  • systemctl 用來(lái)管理 linux系統(tǒng)的多種資源:系統(tǒng)服務(wù)、硬件設(shè)備、掛載點(diǎn)、socket等;下面則主要介紹關(guān)于 service 系統(tǒng)服務(wù)的相關(guān)命令使用。因?yàn)?systemctl 一般用于實(shí)現(xiàn)服務(wù)自啟動(dòng)的腳本
~~ 系統(tǒng)自啟動(dòng)時(shí) 啟動(dòng) cron 服務(wù),啟用或禁用它 # systemctl enable crond.service # systemctl disable ccrond.service # systemctl is-active crond.service ~~ 是否正在運(yùn)行 # systemctl is-enabled crond.service ~~ 是否建立了啟動(dòng)鏈接 ~~ 啟動(dòng)、重啟、停止、重載、殺死服務(wù)以及查看服務(wù) httpd # systemctl start # systemctl restart # systemctl stop # systemctl reload # systemctl status # systemctl kill a ~~ 列出所有服務(wù)(包括啟用的和禁用的) # systemctl list-units ~~ 列出所有管理的資源單元 # systemctl list-unit-files --type=service ~~ 只列出所有 service 類型資源 ~~ 獲取某個(gè)服務(wù)(httpd)的依賴性列表 # systemctl list-dependencies ~~ 檢查 httpd 服務(wù)的所有配置細(xì)節(jié) # systemctl show httpd 復(fù)制代碼
  • xxx.service 文件的詳細(xì)配置介紹請(qǐng)上網(wǎng)自行查看,下面給個(gè)簡(jiǎn)單的模板介紹
[Unit] Description:描述 After:audi 在audi啟動(dòng)后才啟動(dòng) ConditionPathExists: 執(zhí)行條件 [Service] EnvironmentFile: 變量所在文件 ExecStart: 執(zhí)行啟動(dòng)命令 Restart: fail時(shí)重啟 [Install] Alias:服務(wù)別名 WangtedBy: 多用戶模式下需要的 復(fù)制代碼

nohup 和 &

  • nohup 和 & 組合可以不掛斷地在后臺(tái)運(yùn)行進(jìn)程,命令格式:nohup command [agrs..] [&]。& 表示程序可以在linux 后臺(tái)運(yùn)行,在當(dāng)前 shell 界面 ctrl C 退出,該程序也能繼續(xù)運(yùn)行,它可以忽略 SIGINT 信號(hào),不過(guò)它會(huì)隨著 shell 程序的關(guān)閉而停止,這是因?yàn)?& 運(yùn)行的進(jìn)程對(duì) SIGHUP 信號(hào)不免疫
  • 加上 nohup 就可以做到忽略SIGHUP信號(hào)
~~ 在后臺(tái)運(yùn)行 lwl.py,且不隨著 shell 關(guān)閉而死亡。永遠(yuǎn)存在 # nohup python lwl.py &> /var/log & 復(fù)制代碼

kill

  • 如果在linux遇到需要?dú)⑺阑蛲V鼓尺M(jìn)程,可以使用 kill, 示例:# kill -9 1211。kill 也不單單用于停止進(jìn)程,可用kill [-s <指定信號(hào)>][程序] 發(fā)送指定信號(hào)給指定程序,而# kill -l 可列出全部的信號(hào)名稱。
~~ 列出全部的信息名稱 # kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM ... ... ~~ 發(fā)送 SIGQUIT 給 pid = 1211 的進(jìn)程 # kill -s SIGQUIT 1211 ~~ 或者 kill -SIGQUIT 1211 復(fù)制代碼

5 系統(tǒng)性能參數(shù)查看

ps

  • ps 命令用于顯示當(dāng)前進(jìn)程的狀態(tài)。命令格式:ps [options]
options 參數(shù)解釋 -A/a 列出所有的進(jìn)程 -e 等于 “-A” f 顯示程序間的關(guān)系 -w 顯示加寬可以顯示較多的資訊 -au 顯示較詳細(xì)的資訊 -aux 顯示所有包含其他使用者的行程 復(fù)制代碼
  • ps -ef 各項(xiàng)指標(biāo)解釋
# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 6 18:39 pts/0 00:02:27 java -jar /o root 102 0 0 18:40 pts/1 00:00:00 /bin/bash root 158 102 0 18:47 pts/1 00:00:00 /usr/bin/python /usr/bin/dstat ---------各項(xiàng)指標(biāo)解析----------------------- UID 程序的執(zhí)行者 UID PID 進(jìn)程的ID號(hào) PPID 則是其上級(jí)父程序的ID C cpu 使用的資源百分比 TTY 登入者的終端機(jī)位置 TIME CPU 執(zhí)行的時(shí)間 CMD 進(jìn)程執(zhí)行的命令 復(fù)制代碼
  • ps -aux 各項(xiàng)指標(biāo)解釋
# ps -aux ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 7.0 5.3 13278220 1736948 pts/0 Ssl+ 18:39 2:24 java -jar /o root 102 0.0 0.0 15264 2044 pts/1 Ss 18:40 0:00 /bin/bash root 158 0.0 0.0 52176 6756 pts/1 T 18:47 0:00 /usr/bin/python /usr/bin/dstat root 159 0.0 0.0 52176 6756 pts/1 T 18:49 0:00 /usr/bin/python /usr/bin/dstat -n -N eth0,total ---------各項(xiàng)指標(biāo)解析----------------------- USER 行程擁有者 PID pid %CPU 占用的 CPU 使用率 %MEM 占用的記憶體使用率 VSZ 占用的虛擬記憶體大小 RSS 占用的記憶體大小 TTY 終端的次要裝置號(hào)碼 (minor device number of tty) STAT 該進(jìn)程程的狀態(tài): D: 無(wú)法中斷的休眠狀態(tài) (通常 IO 的進(jìn)程) R: 正在執(zhí)行中 S: 可中斷的睡眠狀態(tài) T: 暫停狀態(tài)或跟蹤狀態(tài) Z: 僵尸進(jìn)程(zombie),無(wú)法正常終止 X: 退出狀態(tài),進(jìn)程即將被銷毀 START 登入者的終端機(jī)位置 TIME CPU 執(zhí)行的時(shí)間 COMMAND 進(jìn)程執(zhí)行的命令 復(fù)制代碼

lsof

  • lsof(List Open Files) 用于查看你進(jìn)程開(kāi)打的文件,打開(kāi)文件的進(jìn)程,進(jìn)程打開(kāi)的端口(TCP、UDP)。命令格式 lsof [options] filename
options 參數(shù)解釋 -a 列出打開(kāi)文件存在的進(jìn)程 -c<進(jìn)程名> 列出指定進(jìn)程所打開(kāi)的文件(常用) -p<進(jìn)程號(hào)> 列出指定進(jìn)程號(hào)所打開(kāi)的文件(常用) -g 列出屬于gid的進(jìn)程詳情 -u<uname/uid> 顯示歸屬u(mài)name或uid的進(jìn)程情況 -d<fd文件號(hào)> 列出占用該文件號(hào)的進(jìn)程 +d<目錄> 列出目錄下被打開(kāi)的文件 +D<目錄> 遞歸列出目錄下被打開(kāi)的文件 -n<目錄> 列出使用NFS的文件 -i<條件> 列出符合條件的進(jìn)程。(ip4/ip6協(xié)議、端口、 @ip ) -u 列出UID號(hào)進(jìn)程詳情 復(fù)制代碼
  • lsof 各項(xiàng)指標(biāo)解釋
# lsof command PID USER FD type DEVICE SIZE NODE NAME init 1 root txt REG 8,2 43496 6121706 /sbin/init ---------各項(xiàng)指標(biāo)解析----------------------- COMMAND 進(jìn)程的名稱 PID 進(jìn)程標(biāo)識(shí)符 USER 進(jìn)程所有者 FD 文件描述符,應(yīng)用程序通過(guò)文件描述符識(shí)別該文件。如cwd、txt等 TYPE 文件類型,如DIR、REG等 DEVICE 指定磁盤(pán)的名稱 SIZE 文件的大小 NODE 索引節(jié)點(diǎn)(文件在磁盤(pán)上的標(biāo)識(shí)) NAME 打開(kāi)文件的確切名稱 復(fù)制代碼
  • lsof 示例
~~ 顯示所有打開(kāi)80端口的進(jìn)程 # lsof -i:80 ~~ 那個(gè)進(jìn)程在占用/etc/passwd # lsof /etc/passwd ~~ 顯示使用fd為1211的進(jìn)程 # lsof -d 1211 ~~ 顯示那些文件被pid為 1211 的進(jìn)程打開(kāi) # lsof -p 1211 ~~ 查看sendmail進(jìn)程的文件使用情況 # lsof -c sendmail 復(fù)制代碼

pidof

  • pidof 是linux系統(tǒng)中用來(lái)查找正在運(yùn)行進(jìn)程的進(jìn)程號(hào)(pid)的工具。如果我們提前知道進(jìn)程名,則可以根據(jù)進(jìn)程名查找pid,命令格式:pidof [options] 進(jìn)程名稱
options 選項(xiàng)參數(shù) -s: 僅返回一個(gè)進(jìn)程號(hào); -c: 僅顯示具有相同“root”目錄的進(jìn)程 -x: 顯示由腳本開(kāi)啟的進(jìn)程 -o: 指定不顯示的進(jìn)程ID 復(fù)制代碼
  • pidof 示例
# pidof -s nginx 1211 復(fù)制代碼

top

  • top 命令是用來(lái)監(jiān)控Linux系統(tǒng)狀況,比如cpu、內(nèi)存,進(jìn)程等資源使用情況。命令格式: top [-options]
options 選項(xiàng)參數(shù) -i<時(shí)間>    設(shè)置刷新間隔時(shí)間 -u<用戶名> 指定用戶名 -p<進(jìn)程號(hào)> 指定進(jìn)程 -H 開(kāi)啟線程查看 復(fù)制代碼
  • top 各項(xiàng)輸出指標(biāo)解釋
# top top - 18:20:27 up 26 days, 8:30, 2 users, load average: 0.04, 0.09, 0.13 Tasks: 168 total, 1 running, 167 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.5 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem: 32762356 total, 14675196 used, 18087160 free, 884 buffers KiB Swap: 2103292 total, 0 used, 2103292 free. 6580028 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1260 root 20 0 7933492 1.173g 14004 S 0.333 3.753 58:20.74 java 1503 root 20 0 69172 2240 1412 S 0.333 0.007 0:48.05 httpd 1520 daemon 20 0 358140 3980 776 S 0.333 0.012 6:19.55 httpd 2323 mysql 20 0 19.918g 4.538g 9404 S 0.333 14.52 352:51.44 mysqld ....... ---------各項(xiàng)指標(biāo)解析--------------------------------------------------- 第一行統(tǒng)計(jì)信息區(qū) 18:20:27 當(dāng)前時(shí)間 up 25 days, 17:29 系統(tǒng)運(yùn)行時(shí)間,格式為時(shí):分 1 user 當(dāng)前登錄用戶數(shù) load average: 0.04, 0.09, 0.13 系統(tǒng)負(fù)載,三個(gè)數(shù)值分別為 1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值 Tasks:進(jìn)程相關(guān)信息 running 正在運(yùn)行的進(jìn)程數(shù) sleeping 睡眠的進(jìn)程數(shù) stopped 停止的進(jìn)程數(shù) zombie 僵尸進(jìn)程數(shù) Cpu(s):CPU相關(guān)信息 %us:表示用戶空間程序的cpu使用率(沒(méi)有通過(guò)nice調(diào)度) %sy:表示系統(tǒng)空間的cpu使用率,主要是內(nèi)核程序 %ni:表示用戶空間且通過(guò)nice調(diào)度過(guò)的程序的cpu使用率 %id:空閑cpu %wa:cpu運(yùn)行時(shí)在等待io的時(shí)間 %hi:cpu處理硬中斷的數(shù)量 %si:cpu處理軟中斷的數(shù)量 %st:被虛擬機(jī)偷走的cpu Mem 內(nèi)存信息 total 物理內(nèi)存總量 used 使用的物理內(nèi)存總量 free 空閑內(nèi)存總量 buffers 用作內(nèi)核緩存的內(nèi)存量 Swap 內(nèi)存信息 total 交換區(qū)總量 used 使用的交換區(qū)總量 free 空閑交換區(qū)總量 cached 緩沖的交換區(qū)總量 ~~ 常用的指標(biāo) PID 進(jìn)程id PPID 父進(jìn)程id UID 進(jìn)程所有者的用戶id USER 進(jìn)程所有者的用戶名 GROUP 進(jìn)程所有者的組名 TTY 啟動(dòng)進(jìn)程的終端名。不是從終端啟動(dòng)的進(jìn)程則顯示為 ? PR 優(yōu)先級(jí) NI nice值。負(fù)值表示高優(yōu)先級(jí),正值表示低優(yōu)先級(jí) P 最后使用的CPU,僅在多CPU環(huán)境下有意義 %CPU 上次更新到現(xiàn)在的CPU時(shí)間占用百分比 TIME 進(jìn)程使用的CPU時(shí)間總計(jì),單位秒 TIME+ 進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒 %MEM 進(jìn)程使用的物理內(nèi)存百分比 VIRT 進(jìn)程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES SWAP 進(jìn)程使用的虛擬內(nèi)存中,被換出的大小,單位kb。 RES 進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA CODE 可執(zhí)行代碼占用的物理內(nèi)存大小,單位kb DATA 可執(zhí)行代碼以外的部分(數(shù)據(jù)段+棧)占用的物理內(nèi)存大小,單位kb SHR 共享內(nèi)存大小,單位kb S 進(jìn)程狀態(tài); 相關(guān)枚舉值解釋查看 ps -ef S 項(xiàng)解釋 COMMAND 進(jìn)程啟動(dòng)執(zhí)行的命令行 復(fù)制代碼
  • top 命令下,查看信息常用快捷鍵
h    顯示快捷鍵幫助 k    終止一個(gè)進(jìn)程 i    開(kāi)/關(guān)忽略閑置和僵死進(jìn)程 q    退出程序 r    重新安排一個(gè)進(jìn)程的優(yōu)先級(jí)別 S    切換到累計(jì)模式 s    更改刷新間隔時(shí)間,單位秒 f,F   從當(dāng)前顯示中添加或者刪除項(xiàng)目 o,O   改變顯示項(xiàng)目的順序 l    切換顯示平均負(fù)載和啟動(dòng)時(shí)間信息 m    切換顯示內(nèi)存信息 t    切換顯示進(jìn)程和CPU狀態(tài)信息 c    切換顯示命令名稱和完整命令行 M    根據(jù)內(nèi)存使用大小排序 P    根據(jù)CPU使用率進(jìn)行排序 (默認(rèn)排序) T    根據(jù)時(shí)間/累計(jì)時(shí)間進(jìn)行排序 1    展開(kāi)多核cpu顯示 H 線程查看模式切換為開(kāi)或關(guān) 復(fù)制代碼

free

  • free 可查看系統(tǒng)內(nèi)存的使用情況,包括物理內(nèi)存、交換內(nèi)存(swap)和內(nèi)核緩沖區(qū)內(nèi)存。命令格式:free [-bkmg][-hlot][s delay][-c count]
free 選項(xiàng)參數(shù) -b,-k,-m,-g  表示輸出顯示的單位為 bytes,KB,MB,or GB,不添加選項(xiàng)的話默認(rèn)以 KB 為單位顯示 -h   以人類可讀的方式顯示,即后邊會(huì)自動(dòng)帶上單位 -l   顯示詳細(xì)的低內(nèi)存和高內(nèi)存統(tǒng)計(jì)信息(增加了 Low 和 High 這兩行顯示) -o    使用舊的格式顯示(不顯示 -/+buffers/cache 這一行) -t   增加顯示 Total 行,Total = Mem + Swap -s delay   每 delay 秒重復(fù)打印一次,delay 為具體的秒數(shù) -c count    循環(huán)打印 count 次后退出,count 為具體的次數(shù)。需要配合 -s delay 使用 復(fù)制代碼# free -m total used free shared buffers cached Mem: 32107 30414 1692 0 1962 8489 -/+ buffers/cache: 19962 12144 Swap: 0 0 0 ------各項(xiàng)指標(biāo)解釋------------------------------------------------- Mem 表示物理內(nèi)存統(tǒng)計(jì): total   物理內(nèi)存總量,total = used + free used   總使用緩存的數(shù)量(包含 buffers 與 cache),但其中可能部分緩存并未實(shí)際使用 free   未被分配的內(nèi)存 shared  共享內(nèi)存,一般系統(tǒng)不會(huì)用到,總是0 buffers  系統(tǒng)分配但未被使用的 buffers 數(shù)量 cached  系統(tǒng)分配但未被使用的 cache 數(shù)量 -/+ buffers/cache: used   實(shí)際使用內(nèi)存,等于第一行的 used - buffers - cached free   實(shí)際可用內(nèi)存,等于第一行的 free + buffers + cached Swap表示交換區(qū)的使用情況,也就是我們通常所說(shuō)的虛擬內(nèi)存 total   總量虛擬內(nèi)存 used   使用的虛擬內(nèi)存 free   空閑的虛擬內(nèi)存 復(fù)制代碼

mpstat

  • mpstat 是 Multiprocessor Statistics 的縮寫(xiě),可以查看多核心的 cpu 中每個(gè)計(jì)算核心的統(tǒng)計(jì)數(shù)據(jù)。命令格式:mpstat [-P {cpu|ALL}] [delay [count]]
-P {cpu|ALL} 表示監(jiān)控哪個(gè)CPU, cpu在[0,cpu個(gè)數(shù)-1]中取值 delay 相鄰的兩次采樣的間隔時(shí)間 count 采樣的次數(shù),count只能和delay一起使用 復(fù)制代碼# mpstat -P ALL 2 Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU) 07:19:07 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 07:19:09 PM all 21.43 3.36 6.54 6.45 0.00 1.29 0.00 0.00 0.00 60.93 07:19:09 PM 0 20.41 3.57 7.14 4.08 0.00 1.53 0.00 0.00 0.00 63.27 07:19:09 PM 1 22.45 3.06 6.12 5.10 0.00 1.53 0.00 0.00 0.00 61.73 ---------各項(xiàng)輸出指標(biāo)解釋---------------------------------------------- CPU 處理器ID %usr 在 delay 時(shí)間段里,用戶態(tài)的 cpu 時(shí)間(%) %nice %sys 在 delay 時(shí)間段里,核心時(shí)間(%) %iowait 在 delay 時(shí)間段里,硬盤(pán)IO等待時(shí)間(%) %irq 在 delay 時(shí)間段里,硬中斷時(shí)間(%) %soft 在 delay 時(shí)間段里,軟中斷時(shí)間(%) %steal 虛擬機(jī)管理器在服務(wù)另一個(gè)虛擬處理器時(shí)虛擬CPU處在非自愿等待下花費(fèi)時(shí)間的百分比 %guest 顯示運(yùn)行虛擬處理器時(shí) CPU 花費(fèi)時(shí)間的百分比 %gnice gnice/total*100 %idle 在internal時(shí)間段里,CPU除去等待磁盤(pán)IO操作外的因?yàn)槿魏卧蚨臻e的時(shí)間閑置時(shí)間(%) 復(fù)制代碼

iostat

  • iostat 主要用于輸出 CPU 和磁盤(pán) I/O 相關(guān)的統(tǒng)計(jì)信息,命令格式: iostat [options] [delay [count]]
options 選項(xiàng)參數(shù) -c 只顯示系統(tǒng)CPU統(tǒng)計(jì)信息,即單獨(dú)輸出avg-cpu結(jié)果,不包括device結(jié)果 -d 單獨(dú)輸出Device結(jié)果,不包括cpu結(jié)果 -k/-m 輸出結(jié)果以kB/mB為單位,而不是以扇區(qū)數(shù)為單位 -x 輸出更詳細(xì)的io設(shè)備統(tǒng)計(jì)信息 delay 每次輸出間隔時(shí)間 count 表示輸出次數(shù),不帶count表示循環(huán)輸出 復(fù)制代碼
  • 默認(rèn)命令iostat的各項(xiàng)指標(biāo)解析
# iostat Linux 4.4.73-5-default 2021年07月08日 _x86_64_ (40 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 2.50 0.41 0.94 0.02 0.00 96.13 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 12.09 27.80 507.24 57343492 1046298308 sdb 17.95 30.91 647.84 63751096 1336305974 ------各項(xiàng)指標(biāo)解析----------------------------------------------------------- avg-cpu: 總體cpu使用情況統(tǒng)計(jì)信息,對(duì)于多核cpu,這里為所有cpu的平均值 %user 用戶空間的CPU使用率 %nice CPU處在帶NICE值的用戶模式下的時(shí)間百分比 %system 內(nèi)核空間的CPU使用率 %iowait CPU等待IO的百分比 %steal 虛擬機(jī)的虛擬機(jī)CPU使用的CPU %idle 空閑的CPU Device: 各磁盤(pán)設(shè)備的IO統(tǒng)計(jì)信息。各列含義如下: tps 每秒進(jìn)程下發(fā)的IO讀、寫(xiě)請(qǐng)求數(shù)量 KB_read/s 每秒從驅(qū)動(dòng)器讀入的數(shù)據(jù)量,單位為K。 KB_wrtn/s 每秒從驅(qū)動(dòng)器寫(xiě)入的數(shù)據(jù)量,單位為K。 KB_read 讀入數(shù)據(jù)總量,單位為K。 KB_wrtn 寫(xiě)入數(shù)據(jù)總量,單位為K 復(fù)制代碼
  • iostat -x -k -d 1 2的各項(xiàng)指標(biāo)解析
# iostat -x -k -d 1 1 Linux 4.4.73-5-default (ceshi44) 2021年07月08日 _x86_64_ (40 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.08 2.48 0.37 11.71 27.80 507.24 88.53 0.02 1.34 14.96 0.90 0.09 0.10 sdb 0.00 1.20 1.28 16.67 30.91 647.83 75.61 0.17 9.51 9.40 9.52 0.32 0.57 ------各項(xiàng)指標(biāo)解析---------------------------------------------------------- rrqm/s: 每秒對(duì)該設(shè)備的讀請(qǐng)求被合并次數(shù),文件系統(tǒng)會(huì)對(duì)讀取同塊(block)的請(qǐng)求進(jìn)行合并 wrqm/s: 每秒對(duì)該設(shè)備的寫(xiě)請(qǐng)求被合并次數(shù) r/s: 每秒完成的讀次數(shù) w/s: 每秒完成的寫(xiě)次數(shù) rkB/s: 每秒讀數(shù)據(jù)量(kB為單位) wkB/s: 每秒寫(xiě)數(shù)據(jù)量(kB為單位) avgrq-sz: 平均每次IO操作的數(shù)據(jù)量(扇區(qū)數(shù)為單位) avgqu-sz: 平均等待處理的IO請(qǐng)求隊(duì)列長(zhǎng)度 await: 平均每次IO請(qǐng)求等待時(shí)間(包括等待時(shí)間和處理時(shí)間,毫秒為單位) svctm: 平均每次IO請(qǐng)求的處理時(shí)間(毫秒為單位) %util: 采用周期內(nèi)用于IO操作的時(shí)間比率,即IO隊(duì)列非空的時(shí)間比率 復(fù)制代碼

netstat

  • netstat 命令用于顯示各種網(wǎng)絡(luò)相關(guān)信息,如網(wǎng)絡(luò)連接,路由表,網(wǎng)絡(luò)連接狀態(tài)。命令格式:netstat [-options]
options 參數(shù)解析 -a (all)顯示所有選項(xiàng),默認(rèn)不顯示 Listen 相關(guān) -t (tcp)僅顯示tcp相關(guān)選項(xiàng) -u (udp)僅顯示udp相關(guān)選項(xiàng) -n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化成數(shù)字。 -l 僅列出有在 Listen (監(jiān)聽(tīng)) 的服務(wù)狀態(tài) -p 顯示建立相關(guān)鏈接的程序名 -r 顯示路由信息,路由表 -e 顯示擴(kuò)展信息,例如uid等 -s 按各個(gè)協(xié)議進(jìn)行統(tǒng)計(jì) -c 每隔一個(gè)固定時(shí)間,執(zhí)行該netstat命令 復(fù)制代碼
  • 各項(xiàng)輸出指標(biāo)解析
# netstat -pt Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 localhost:30037 *:* LISTEN 2109/firefox .... ------各項(xiàng)指標(biāo)解析---------------------------------------- Proto 協(xié)議 Recv-Q 接收隊(duì)列 ,一般都應(yīng)該是0。如果不是則表示軟件包正在隊(duì)列中堆積 Send-Q 發(fā)送隊(duì)列,一般都應(yīng)該是0。如果不是則表示軟件包正在隊(duì)列中堆積 Local Address 本地地址+port Foreign Address 遠(yuǎn)端地址+port State 狀態(tài) PID 進(jìn)程pid Program name 進(jìn)程名 復(fù)制代碼
  • netstat 常用命令示例
# netstat -anp # netstat -tnlp 復(fù)制代碼

vmstat

  • vmstat (虛擬內(nèi)存統(tǒng)計(jì))可對(duì)操作系統(tǒng)的內(nèi)存、進(jìn)程、CPU,磁盤(pán)進(jìn)行監(jiān)控。相比top,可以看到整個(gè)機(jī)器的CPU、內(nèi)存、IO的使用情況,而不是單單看到各個(gè)進(jìn)程的CPU使用率和內(nèi)存使用率(使用場(chǎng)景不一樣)
  • 命令格式
// -a:顯示活躍和非活躍內(nèi)存 -n:只在開(kāi)始時(shí)顯示一次各字段名稱 # vmstat [-a] [-n] [delay [count]] // f:總的fork進(jìn)程 s:內(nèi)存使用的詳細(xì)信息 d:磁盤(pán)的讀/寫(xiě) m:系統(tǒng)的slab信息 # vmstat [-fsdm] // 查看指定磁盤(pán)分區(qū)統(tǒng)計(jì)信息 # vmstat [-p disk partition] 復(fù)制代碼
  • vmstat 示例
$ vmstat 2 1 procs --------memory--------- --swap-- --io--- -system-- ----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 3 1 96 0 0 ------各項(xiàng)指標(biāo)解析---------------------------------------- Procs(進(jìn)程) r: 運(yùn)行隊(duì)列中進(jìn)程數(shù)量,當(dāng)這個(gè)值超過(guò)了CPU數(shù)目,就會(huì)出現(xiàn)CPU瓶頸了 b: 等待IO的進(jìn)程數(shù)量 Memory(內(nèi)存): swpd: 使用虛擬內(nèi)存大小,如果大于0,表示你的機(jī)器物理內(nèi)存不足了,如果不是程序內(nèi)存泄露的原因,那么你該升級(jí)內(nèi)存了 free: 可用內(nèi)存大小 buff: 用作緩沖的內(nèi)存大小 cache: 用作緩存的內(nèi)存大 Swap: si: 每秒從交換區(qū)寫(xiě)到內(nèi)存的大小,如果這個(gè)值大于0,表示物理內(nèi)存不夠用或者內(nèi)存泄露了,要查找耗內(nèi)存進(jìn)程解決掉 so: 每秒寫(xiě)入交換區(qū)的內(nèi)存大小 IO:(現(xiàn)在的Linux版本塊的大小為1024bytes) bi: 每秒讀取的塊數(shù) bo: 每秒寫(xiě)入的塊數(shù),bi和bo一般都要接近0,不然就是IO過(guò)于頻繁,需要調(diào)整 系統(tǒng) in: 每秒中斷數(shù),包括時(shí)鐘中斷 cs: 每秒上下文切換數(shù),調(diào)用系統(tǒng)函數(shù),就要進(jìn)行上下文切換,線程的切換,也要進(jìn)程上下文切換,這個(gè)值要越小越好 CPU(以百分比表示): us: 用戶進(jìn)程執(zhí)行時(shí)間 sy: 系統(tǒng)進(jìn)程執(zhí)行時(shí)間 id: 空閑時(shí)間(包括IO等待時(shí)間),中央處理器的空閑時(shí)間 wa: 等待 IO 時(shí)間 st: 虛擬機(jī)的虛擬機(jī)CPU使用的CPU 復(fù)制代碼

dstat

  • vmstat 是對(duì)系統(tǒng)的整體情況進(jìn)行統(tǒng)計(jì),無(wú)法對(duì)某個(gè)進(jìn)程進(jìn)行深入分析,所以推薦下 dstat。dstat 是一個(gè)可以取代vmstat、iostat、netstat 這些命令的多功能命令工具,執(zhí)行 dstat 命令,默認(rèn)情況它會(huì)收集-cpu-、-disk-、-net-、-paging-、-system-的數(shù)據(jù),一秒鐘收集一次。命令格式:dstat [options] [delay [count]],其中使用 -p pid 選項(xiàng)可針對(duì)某一進(jìn)程進(jìn)行統(tǒng)計(jì)監(jiān)控
options 常用參數(shù)解析 -l 顯示負(fù)載統(tǒng)計(jì)量 -c 開(kāi)啟cpu統(tǒng)計(jì) -C <CPU> 選項(xiàng)跟著 cpu 的編號(hào),顯示該cpu 的統(tǒng)計(jì) -d 開(kāi)啟 disk 統(tǒng)計(jì) -g 開(kāi)啟分頁(yè)統(tǒng)計(jì) -y 開(kāi)啟系統(tǒng)統(tǒng)計(jì),包括中斷和上下文切換 -i 開(kāi)啟中斷統(tǒng)計(jì) -s 開(kāi)啟 swap 統(tǒng)計(jì),包括used, free -m 顯示內(nèi)存使用率(包括used,buffer,cache,free值) -n 開(kāi)啟網(wǎng)絡(luò)讀寫(xiě)統(tǒng)計(jì) –socket 顯示網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù) –tcp 顯示常用的TCP統(tǒng)計(jì) -N 選項(xiàng)跟著網(wǎng)絡(luò)設(shè)備名,多個(gè)用逗號(hào)隔開(kāi),進(jìn)行網(wǎng)絡(luò)統(tǒng)計(jì) -p 開(kāi)啟對(duì)進(jìn)程統(tǒng)計(jì),runnable, uninterruptible, new -r io開(kāi)啟請(qǐng)求統(tǒng)計(jì),包括read requests, write requests --output文件 此選項(xiàng)也比較有用,可以把狀態(tài)信息以csv的格式重定向到指定的文件中 -–disk-util 顯示某一時(shí)間磁盤(pán)的忙碌狀況 -–freespace 顯示當(dāng)前磁盤(pán)空間使用率 -–proc-count 顯示正在運(yùn)行的程序數(shù)量 --top-bio-adv 指出塊I/O最大的進(jìn)程 --top-cputime 耗費(fèi)CPU時(shí)間最多的進(jìn)程名和耗費(fèi)時(shí)間 --top-cpu-adv 顯示CPU占用最大的進(jìn)程 -–top-io 顯示正常I/O最大的進(jìn)程 -–top-mem 顯示占用最多內(nèi)存的進(jìn)程 復(fù)制代碼
  • 輸出指標(biāo)解析
# dstat You did not select any stats, using -cdngy by default. ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 29 7 57 6 0 1| 85k 1457k| 0 0 | 0 0 |8350 67k 30 9 54 6 0 1| 0 1290k| 857B 568B| 0 0 | 33k 75k ... ------各項(xiàng)指標(biāo)解析----------------------------------- CPU的使用率 usr 顯示了用戶占比 sys 系統(tǒng)占比 idl 空閑占比 wai 等待占比 hiq 硬中斷 siq 軟中斷情況 磁盤(pán)的讀寫(xiě) read 磁盤(pán)的讀總數(shù) writ 磁盤(pán)的寫(xiě)總數(shù) 網(wǎng)絡(luò)設(shè)備發(fā)送和接受的數(shù)據(jù) recv 網(wǎng)絡(luò)收數(shù)據(jù)總數(shù) send 網(wǎng)絡(luò)發(fā)數(shù)據(jù)總數(shù) 系統(tǒng)的分頁(yè)活動(dòng) in 內(nèi)存頁(yè)換入 out 內(nèi)存頁(yè)換出 系統(tǒng)統(tǒng)計(jì) int 統(tǒng)計(jì)中斷 csw 上下文切換 復(fù)制代碼
  • 指定展示各個(gè)網(wǎng)卡的收發(fā)狀態(tài)
# dstat -n -N eth0,total --net/eth0---net/total- recv send: recv send 0 0 : 0 0 140B 140B: 140B 140B 18k 6570B: 18k 6570B 復(fù)制代碼
  • 查看全部?jī)?nèi)存都有誰(shuí)在占用
# dstat -g -l -m -s --top-mem ---paging-- ---load-avg--- ------memory-usage----- ----swap--- --most-expensive- in out | 1m 5m 15m | used buff cach free| used free| memory process 0 0 4.77 5.09 2108k 7892M 233M| 0 0 |java 1670M 0 0 4.77 5.09 2108k 7893M 221M| 0 0 |java 1670 復(fù)制代碼
  • 進(jìn)程最耗資源統(tǒng)計(jì)
# dstat --top-cpu-adv 1 2 -------most-expensive-cpu-process------- process pid cpu read write java 1 0.0% 43B 0 java 1 0.2% 0 0 復(fù)制代碼

sar

  • sar 和 dstat 差不多,隨你們各自喜好使用,可以從多方面對(duì)系統(tǒng)的資源進(jìn)行監(jiān)控,包括:文件的讀寫(xiě)情況、系統(tǒng)調(diào)用的使用情況、磁盤(pán)I/O、CPU效率、內(nèi)存使用狀況、進(jìn)程活動(dòng)及 IPC 有關(guān)的活動(dòng)等。命令格式:sar [options] [-A] [-o file] delay [count]。delay 為采樣間隔,count 為采樣次數(shù),默認(rèn)值是1
options 選項(xiàng)參數(shù) -A 所有報(bào)告的總和 -o file 表示將命令結(jié)果以二進(jìn)制格式存放在文件中,file 是文件名 -u 輸出CPU使用情況的統(tǒng)計(jì)信息 -v 輸出inode、文件和其他內(nèi)核表的統(tǒng)計(jì)信息 -d 輸出每一個(gè)塊設(shè)備的活動(dòng)信息 -b 顯示I/O和傳送速率的統(tǒng)計(jì)信息(相對(duì)-d 是匯總信息) -r 輸出內(nèi)存和交換空間的統(tǒng)計(jì)信息 -R 輸出內(nèi)存頁(yè)面的統(tǒng)計(jì)信息 -a 文件讀寫(xiě)情況 -q 隊(duì)列長(zhǎng)度和平均負(fù)載 -c 輸出進(jìn)程統(tǒng)計(jì)信息,每秒創(chuàng)建的進(jìn)程數(shù) -y 終端設(shè)備活動(dòng)情況 -w 輸出系統(tǒng)交換活動(dòng)信息 -x <pid> 顯示給定進(jìn)程的統(tǒng)計(jì)信息 -n <關(guān)鍵詞> 統(tǒng)計(jì)網(wǎng)絡(luò)信息 關(guān)鍵詞可以是: DEV 網(wǎng)卡 EDEV 網(wǎng)卡 (錯(cuò)誤) NFS NFS 客戶端 NFSD NFS 服務(wù)器 SOCK Sockets (套接字) (v4) SOCK6 Sockets (套接字) (v6) IP IP 流 (v4) EIP IP 流 (v4) (失敗信息) ICMP ICMP 流 (v4) EICMP ICMP 流 (v4) (失敗信息) TCP TCP 流 (v4) ETCP TCP 流 (v4) (失敗信息) UDP UDP 流 (v4) IP6 IP 流 (v6) EIP6 IP 流 (v6) (失敗信息) ICMP6 ICMP 流 (v6) EICMP6 ICMP 流 (v6) (失敗信息) UDP6 UDP 流 (v6) 復(fù)制代碼
  • 查看 CPU 使用情況:sar -u 1 2
# sar -u 1 2 Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU) 07:02:04 PM CPU %user %nice %system %iowait %steal %idle 07:02:05 PM all 23.90 3.22 7.97 5.25 0.00 59.66 07:02:06 PM all 26.53 4.76 8.84 5.95 0.00 53.91 Average: all 25.21 3.99 8.40 5.60 0.00 56.79 ------各項(xiàng)指標(biāo)解析--------------------------------- %user 用戶空間的CPU使用 %nice 改變過(guò)優(yōu)先級(jí)的進(jìn)程的CPU使用率 %system 內(nèi)核空間的CPU使用率 %iowait CPU等待IO的百分比 %steal 虛擬機(jī)的虛擬機(jī)CPU使用的CPU %idle 空閑的CPU 復(fù)制代碼
  • 查看內(nèi)存使用情況 sar -r
# sar -r 1 2 Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU) 07:05:16 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 07:05:17 PM 299596 32398396 99.08 2084 7615088 37900868 115.91 27267692 3809860 672 07:05:18 PM 298932 32399060 99.09 2084 7615848 37900100 115.91 27267828 3810252 488 Average: 299264 32398728 99.08 2084 7615468 37900484 115.91 27267760 3810056 580 ------各項(xiàng)指標(biāo)解析-------------------- kbmemfree 空閑的物理內(nèi)存大小 kbmemused 使用中的物理內(nèi)存大小 %memused 物理內(nèi)存使用率 kbbuffers 內(nèi)核中作為緩沖區(qū)使用的物理內(nèi)存大小,kbbuffers和kbcached:這兩個(gè)值就是free命令中的buffer和cache. kbcached 緩存的文件大小 kbcommit 保證當(dāng)前系統(tǒng)正常運(yùn)行所需要的最小內(nèi)存,即為了確保內(nèi)存不溢出而需要的最少內(nèi)存(物理內(nèi)存+Swap分區(qū)) commit 這個(gè)值是kbcommit與內(nèi)存總量(物理內(nèi)存+swap分區(qū))的一個(gè)百分比的值 復(fù)制代碼
  • 查看 IO 和傳遞速率:sar -b
# sar -b 1 2 Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU) 07:06:08 PM tps rtps wtps bread/s bwrtn/s 07:06:09 PM 171.00 0.00 171.00 0.00 3431.00 07:06:10 PM 163.00 0.00 163.00 0.00 2620.00 Average: 167.00 0.00 167.00 0.00 3025.50 ------各項(xiàng)指標(biāo)解析-------------------- tps 磁盤(pán)每秒鐘的IO總數(shù),等于iostat中的tps rtps 每秒鐘從磁盤(pán)讀取的IO總數(shù) wtps 每秒鐘從寫(xiě)入到磁盤(pán)的IO總數(shù) bread/s 每秒鐘從磁盤(pán)讀取的塊總數(shù) bwrtn/s 每秒鐘此寫(xiě)入到磁盤(pán)的塊總數(shù) 復(fù)制代碼
  • 網(wǎng)絡(luò)接口信息:sar -n DEV
# sar -n DEV 1 1 Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU) 07:06:57 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 07:06:58 PM eth0 2.00 4.00 1.45 0.56 0.00 0.00 0.00 07:06:58 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:06:58 PM tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s Average: eth0 2.00 4.00 1.45 0.56 0.00 0.00 0.00 Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ------各項(xiàng)指標(biāo)解析-------------------- IFACE 本地網(wǎng)卡接口的名稱 rxpck/s 每秒鐘接受的數(shù)據(jù)包 txpck/s 每秒鐘發(fā)送的數(shù)據(jù)庫(kù) rxKB/S 每秒鐘接受的數(shù)據(jù)包大小,單位為KB txKB/S 每秒鐘發(fā)送的數(shù)據(jù)包大小,單位為KB rxcmp/s 每秒鐘接受的壓縮數(shù)據(jù)包 txcmp/s 每秒鐘發(fā)送的壓縮包 rxmcst/s 每秒鐘接收的多播數(shù)據(jù)包 復(fù)制代碼
  • 查看磁盤(pán)使用情況:sar -d。相對(duì) -b 它可以看到各個(gè)設(shè)備的信息,-b 輸出的是匯總信息
sar -d -p 1 1 Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU) 07:08:41 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 07:08:42 PM sdb 160.00 0.00 2914.00 18.21 1.51 9.43 3.73 59.70 07:08:42 PM sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:08:42 PM sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util Average: sdb 160.00 0.00 2914.00 18.21 1.51 9.43 3.73 59.70 Average: sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ------各項(xiàng)指標(biāo)解析-------------------- DEV 磁盤(pán)設(shè)備的名稱,如果不加-p,會(huì)顯示dev253-0類似的設(shè)備名稱,因此加上-p顯示的名稱更直接 tps 每秒I/O的傳輸總數(shù) rd_sec/s 每秒讀取的扇區(qū)的總數(shù) wr_sec/s 每秒寫(xiě)入的扇區(qū)的總數(shù) avgrq-sz 平均每次次磁盤(pán)I/O操作的數(shù)據(jù)大小(扇區(qū)) avgqu-sz 磁盤(pán)請(qǐng)求隊(duì)列的平均長(zhǎng)度 await 從請(qǐng)求磁盤(pán)操作到系統(tǒng)調(diào)用完成處理,每次請(qǐng)求的平均消耗時(shí)間 svctm I/O的服務(wù)處理時(shí)間,即不包括請(qǐng)求隊(duì)列中的時(shí)間 %util I/O請(qǐng)求占用的CPU百分比,值越高,說(shuō)明I/O越慢 復(fù)制代碼
  • 統(tǒng)計(jì)socket連接信息:sar -n SOCK 1 1
# sar -n SOCK 1 1 Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU) 07:09:18 PM totsck tcpsck udpsck rawsck ip-frag tcp-tw 07:09:19 PM 10910 261 0 0 0 562 Average: 10910 261 0 0 0 562 ------各項(xiàng)指標(biāo)解析-------------------- totsck 當(dāng)前被使用的socket總數(shù) tcpsck 當(dāng)前正在被使用的TCP的socket總數(shù) udpsck 當(dāng)前正在被使用的UDP的socket總數(shù) rawsck 當(dāng)前正在被使用于RAW的skcket總數(shù) if-frag 當(dāng)前的IP分片的數(shù)目 tcp-tw TCP套接字中處于TIME-WAIT狀態(tài)的連接數(shù)量 復(fù)制代碼
  • TCP連接的統(tǒng)計(jì):sar -n TCP
# sar -n TCP 1 1 Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU) 07:09:39 PM active/s passive/s iseg/s oseg/s 07:09:40 PM 1.00 0.00 5.00 7.00 Average: 1.00 0.00 5.00 7.00 ------各項(xiàng)指標(biāo)解析-------------------- active/s 新的主動(dòng)連接 passive/s 新的被動(dòng)連接 iseg/s 接受的段 oseg/s 輸出的段 復(fù)制代碼

pidstat

  • pidstat是sysstat工具的一個(gè)命令,用于監(jiān)控全部或指定進(jìn)程的cpu、內(nèi)存、線程、設(shè)備IO等系統(tǒng)資源的占用情況。命令格式:pidstat [options] [delay [count]]
options 參數(shù)解析 -u 默認(rèn)的參數(shù),顯示各個(gè)進(jìn)程的cpu使用統(tǒng)計(jì) -r 顯示各個(gè)進(jìn)程的內(nèi)存使用統(tǒng)計(jì) -d 顯示各個(gè)進(jìn)程的IO使用情況 -p <pid> 指定進(jìn)程號(hào) -w 顯示每個(gè)進(jìn)程的上下文切換情況 -t 顯示選擇進(jìn)程的線程的統(tǒng)計(jì)信息 復(fù)制代碼
  • 查看所有進(jìn)程的 CPU 使用情況:pidstat -u
# pidstat -u Linux 4.4.73-5-default (ceshi44) 2021年07月08日 _x86_64_ (40 CPU) 14時(shí)11分56秒 UID PID %usr %system %guest %CPU CPU Command 14時(shí)11分56秒 0 1 0.15 0.06 0.00 0.22 22 systemd .... ------各項(xiàng)指標(biāo)解析---------------------------------------- UID 進(jìn)程所屬UID PID 進(jìn)程ID %usr 進(jìn)程在用戶空間占用cpu的百分比 %system 進(jìn)程在內(nèi)核空間占用cpu的百分比 %guest 進(jìn)程在虛擬機(jī)占用cpu的百分比 %CPU 進(jìn)程占用cpu的百分比 CPU 處理進(jìn)程的cpu編號(hào) Command 當(dāng)前進(jìn)程對(duì)應(yīng)的命令 復(fù)制代碼
  • 內(nèi)存使用情況統(tǒng)計(jì):pidstat -r
# pidstat -r Linux 4.4.73-5-default (ceshi44) 2021年07月08日 _x86_64_ (40 CPU) 14時(shí)13分08秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command 14時(shí)13分08秒 0 1 41.04 0.00 186020 5968 0.00 systemd 14時(shí)13分08秒 0 443 0.00 0.00 5828 3004 0.00 pidstat .... ------各項(xiàng)指標(biāo)解析---------------------------------------- PID 進(jìn)程標(biāo)識(shí)符 Minflt/s 任務(wù)每秒發(fā)生的次要錯(cuò)誤,不需要從磁盤(pán)中加載頁(yè) Majflt/s 任務(wù)每秒發(fā)生的主要錯(cuò)誤,需要從磁盤(pán)中加載頁(yè) VSZ 虛擬地址大小,虛擬內(nèi)存的使用KB RSS 常駐集合大小,非交換區(qū)五里內(nèi)存使用KB Command task命令名 復(fù)制代碼
  • 顯示各個(gè)進(jìn)程的IO使用情況:pidstat -d
# pidstat -d Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU) 06:42:35 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command 06:42:35 PM 0 1 0.05 0.00 0.00 java 06:42:35 PM 0 102 0.04 0.05 0.00 bash ------各項(xiàng)指標(biāo)解析--------------------------- kB_rd/s 每秒從磁盤(pán)讀取的KB kB_wr/s 每秒寫(xiě)入磁盤(pán)KB kB_ccwr/s 任務(wù)取消的寫(xiě)入磁盤(pán)的KB。當(dāng)任務(wù)截?cái)嗯K的pagecache的時(shí)候會(huì)發(fā)生 Command 進(jìn)程執(zhí)行命令 復(fù)制代碼
  • 顯示每個(gè)進(jìn)程的上下文切換情況:pidstat -w
# pidstat -w Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU) 06:43:23 PM UID PID cswch/s nvcswch/s Command 06:43:23 PM 0 1 0.00 0.00 java 06:43:23 PM 0 102 0.00 0.00 bash 06:43:23 PM 0 150 0.00 0.00 pidstat ------各項(xiàng)指標(biāo)解析--------------------------- PID 進(jìn)程id Cswch/s 每秒主動(dòng)任務(wù)上下文切換數(shù)量 Nvcswch/s 每秒被動(dòng)任務(wù)上下文切換數(shù)量 Command 進(jìn)程執(zhí)行命令 復(fù)制代碼
  • 指定進(jìn)程并( -t)顯示進(jìn)程的線程統(tǒng)計(jì)信息:pidstat -t -p 1211
# pidstat -t -p 1211 06:44:37 PM UID TGID TID %usr %system %guest %CPU CPU Command 06:44:37 PM 0 1 - 0.00 0.00 0.00 0.00 3 java 06:44:37 PM 0 - 1 0.00 0.00 0.00 0.00 3 |__java 06:44:37 PM 0 - 6 0.00 0.00 0.00 0.00 5 |__java 06:44:37 PM 0 - 7 0.00 0.00 0.00 0.00 4 |__java ... ------各項(xiàng)指標(biāo)解析--------------------------- TGID 主線程的表示 TID 線程id %usr 進(jìn)程在用戶空間占用cpu的百分比 %system 進(jìn)程在內(nèi)核空間占用cpu的百分比 %guest 進(jìn)程在虛擬機(jī)占用cpu的百分比 %CPU 進(jìn)程占用cpu的百分比 CPU 處理進(jìn)程的cpu編號(hào) Command 當(dāng)前進(jìn)程對(duì)應(yīng)的命令 復(fù)制代碼

pstree

  • ps 命令可以顯示當(dāng)前正在運(yùn)行的那些進(jìn)程的信息,但是對(duì)于它們之間的關(guān)系卻顯示得不夠清晰,pstree 命令可以以樹(shù)狀圖顯示進(jìn)程間的關(guān)系。命令格式:pstree [-p] <pid>
# pstree -p 3169 mongod(3169)─┬─{mongod}(3170) ├─{mongod}(3173) ├─{mongod}(3174) ├─{mongod}(3175) ├─{mongod}(3177) ├─{mongod}(3178) ├─{mongod}(3179) ├─{mongod}(3180) 復(fù)制代碼

strace

  • strace 可以跟蹤到一個(gè)進(jìn)程產(chǎn)生的系統(tǒng)調(diào)用,包括參數(shù),返回值,執(zhí)行消耗的時(shí)間命令格式:strace [options] [command]。如果指定進(jìn)程pid,要去掉 command
options 簡(jiǎn)單常用的參數(shù)解析 -c 統(tǒng)計(jì)每一系統(tǒng)調(diào)用的所執(zhí)行的時(shí)間,次數(shù)和出錯(cuò)的次數(shù)等 -t 在輸出中的每一行前加上時(shí)間信息 -tt 在輸出中的每一行前加上時(shí)間信息,微秒級(jí) -ttt 微秒級(jí)輸出,以秒了表示時(shí)間 -T 顯示每一調(diào)用所耗的時(shí)間 -e trace= 只跟蹤指定的系統(tǒng) 調(diào)用.例如:-e trace=open,close,rean,write表示只跟蹤這四個(gè)系統(tǒng)調(diào)用,默認(rèn)是 all -e trace=file 只跟蹤有關(guān)文件操作的系統(tǒng)調(diào)用 -e trace=process 只跟蹤有關(guān)進(jìn)程控制的系統(tǒng)調(diào)用 -e trace=network 跟蹤與網(wǎng)絡(luò)有關(guān)的所有系統(tǒng)調(diào)用 -e trace=ipc 跟蹤所有與進(jìn)程通訊有關(guān)的系統(tǒng)調(diào)用 -o filename 將strace的輸出寫(xiě)入文件filename -p pid 跟蹤指定的進(jìn)程pid 復(fù)制代碼
  • strace 示例
# strace ls # strace cat /dev/null # strace -o ou -T -tt -e trace=all -p 28979 復(fù)制代碼
  • 每一行都是一條系統(tǒng)調(diào)用,等號(hào)左邊是系統(tǒng)調(diào)用的函數(shù)名及其參數(shù),右邊是該調(diào)用的返回值

pmap

  • pmap 提供了進(jìn)程的內(nèi)存映射,pmap命令用于顯示一個(gè)或多個(gè)進(jìn)程的內(nèi)存狀態(tài)。其報(bào)告進(jìn)程的地址空間和內(nèi)存狀態(tài)信息
  • pmap [options] PID
options 參數(shù)解析 -x extended顯示擴(kuò)展格式 -d device顯示設(shè)備格式 復(fù)制代碼# pmap -dx 1 Address Kbytes Mode Offset Device Mapping 00110000 1480K r-x- 0000000000000000 008:00005 /usr/lib 00282000 80K rw-- 0000000000015000 008:00005 /usr/lib 00296000 12K rw-- 0000000000015000 008:00005 [ anon ] ..... ------各項(xiàng)指標(biāo)解析---------------------------------------- Address: 內(nèi)存開(kāi)始地址 Kbytes: 占用內(nèi)存的字節(jié)數(shù)(KB) RSS: 保留內(nèi)存的字節(jié)數(shù)(KB) Dirty: 臟頁(yè)的字節(jié)數(shù)(包括共享和私有的)(KB) Mode: 內(nèi)存的權(quán)限:read、write、execute、shared、private (寫(xiě)時(shí)復(fù)制) Mapping: 占用內(nèi)存的文件、或[anon](分配的內(nèi)存)、或[stack](堆棧) Offset: 文件偏移 Device: 設(shè)備名 (major:minor) 復(fù)制代碼

watch

  • watch 可以幫助實(shí)現(xiàn)定時(shí)輸出的命令結(jié)果,比如 netstat 沒(méi)有間隔輸出結(jié)果的功能。watch [-options] <command>
options 常用參數(shù)選項(xiàng) -n <num> watch 默認(rèn)每2秒運(yùn)行一下程序,可以用 -n 來(lái)指定間隔的時(shí)間 -d watch 會(huì)高亮顯示變化的區(qū)域 切換終端: Ctrl+x 退出watch:Ctrl+g 復(fù)制代碼
  • watch 示例
# watch -n 1 -d netstat -ant # watch uptime 復(fù)制代碼

6 網(wǎng)絡(luò)數(shù)據(jù)抓取

tcpdump

  • tcpdump 是一個(gè)運(yùn)行在命令行下的抓包工具。它允許用戶攔截和顯示發(fā)送或收到過(guò)網(wǎng)絡(luò)連接到該計(jì)算機(jī)的TCP/IP和其他數(shù)據(jù)包。tcpdump 適用于大多數(shù)的類Unix系統(tǒng)操作系統(tǒng);tcpdump 命令格式為:
# tcpdump [ -adeflnNOpqStvx ] [ -c 數(shù)量 ] [ -F 文件名 ] [ -i 網(wǎng)絡(luò)接口 ] [ -r 文件名] [ -s len ] [ -T 類型 ] [ -w 文件名 ] [ 表達(dá)式 ] 選項(xiàng)參數(shù) -a 將網(wǎng)絡(luò)地址和廣播地址轉(zhuǎn)變成名字 -d    將匹配信息包的代碼以人們能夠理解的匯編格式給出 -dd   將匹配信息包的代碼以c語(yǔ)言程序段的格式給出 -ddd   將匹配信息包的代碼以十進(jìn)制的形式給出 -e    在輸出行打印出數(shù)據(jù)鏈路層的頭部信息,包括源mac和目的mac,以及網(wǎng)絡(luò)層的協(xié)議 -f    將外部的Internet地址以數(shù)字的形式打印出來(lái) -l    使標(biāo)準(zhǔn)輸出變?yōu)榫彌_行形式 -n    指定將每個(gè)監(jiān)聽(tīng)到數(shù)據(jù)包中的域名轉(zhuǎn)換成IP地址后顯示,不把網(wǎng)絡(luò)地址轉(zhuǎn)換成名字 -nn: 指定將每個(gè)監(jiān)聽(tīng)到的數(shù)據(jù)包中的域名轉(zhuǎn)換成IP、端口從應(yīng)用名稱轉(zhuǎn)換成端口號(hào)后顯示 -t    在輸出的每一行不打印時(shí)間戳 -v    輸出一個(gè)稍微詳細(xì)的信息,例如在ip包中可以包括ttl和服務(wù)類型的信息 -vv    輸出詳細(xì)的報(bào)文信息 -c    在收到指定的包的數(shù)目后,tcpdump就會(huì)停止 -F    從指定的文件中讀取表達(dá)式,忽略其它的表達(dá)式 -i    指定監(jiān)聽(tīng)的網(wǎng)絡(luò)接口 -p: 將網(wǎng)卡設(shè)置為非混雜模式,不能與host或broadcast一起使用 -r    從指定的文件中讀取包(這些包一般通過(guò)-w選項(xiàng)產(chǎn)生) -w    直接將包寫(xiě)入文件中,并不分析和打印出來(lái) -s len len 表示從一個(gè)包中截取的字節(jié)數(shù)。0表示包不截?cái)啵ネ暾臄?shù)據(jù)包。默認(rèn)的話 tcpdump 只顯示部分?jǐn)?shù)據(jù)包,默認(rèn)68字節(jié) -T    將監(jiān)聽(tīng)到的包直接解釋為指定的類型的報(bào)文,常見(jiàn)的類型有rpc (遠(yuǎn)程過(guò)程調(diào)用)和snmp(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議) -X 告訴tcpdump命令,需要把協(xié)議頭和包內(nèi)容都原原本本的顯示出來(lái)(tcpdump會(huì)以16進(jìn)制和ASCII的形式顯示),這在進(jìn)行協(xié)議分析時(shí)是絕對(duì)的利器。 復(fù)制代碼
  • 表達(dá)式選項(xiàng) 大體可以分成三種過(guò)濾條件,“類型”、“方向”和“協(xié)議”,這三種條件的搭配組合就構(gòu)成了我們的過(guò)濾表達(dá)式 類型關(guān)鍵字:主要包括host,net,port, 例如 host 210.45.114.211,指定主機(jī) 210.45.114.211,net 210.11.0.0 指明210.11.0.0是一個(gè)網(wǎng)絡(luò)地址,port 21 指明端口號(hào)是21 傳輸方向的關(guān)鍵字:主要包括src , dst ,dst or src, dst and src ,這些關(guān)鍵字指明了傳輸?shù)姆较颉Ee例說(shuō)明,src 210.45.114.211 ,指明ip包中源地址是210.45.114.211, dst net 210.11.0.0 指明目的網(wǎng)絡(luò)地址是210.11.0.0 協(xié)議的關(guān)鍵字:主要包括 ether,ip,ip6,arp,rarp,tcp,udp等類型,及這幾個(gè)的包的協(xié)議內(nèi)容。如果沒(méi)有指定任何協(xié)議,則tcpdump將會(huì)監(jiān)聽(tīng)所有協(xié)議的(更具體的請(qǐng)自行查看官方文檔)


第一行:“tcpdump: verbose output suppressed, use -v or -vv for fullprotocol decode”;
提示使用選項(xiàng) -v 和 -vv,可以看到更全的輸出內(nèi)容


第二行“l(fā)istening on eth0, link-type EN10MB (Ethernet), capture size 65535bytes”;
我們監(jiān)聽(tīng)的是通過(guò) eth0 這個(gè)NIC設(shè)備的網(wǎng)絡(luò)包,且它的鏈路層是基于以太網(wǎng)的,要抓的包大小限制是65535字節(jié)。包大小限制值可以通過(guò)-s選項(xiàng)來(lái)設(shè)置


第三行”12:40:33.569037 00:19:e0:b5:10:94 > 00:1a:a0:31:39:d4, ethertypeIPv4 (0x0800),”
12:40:33.569037 分別對(duì)應(yīng)著這個(gè)包被抓到的“時(shí)”、“分”、“秒”、“微妙”。 00:19:e0:b5:10:94 > 00:1a:a0:31:39:d4 表示MAC地址 00:19:e0:b5:10:94 發(fā)送到MAC地址為 00:1a:a0:31:39:d4 的主機(jī),ethertype IPv4 (0x0800)表示Ethernet幀的協(xié)議類型為ipv4(即代碼為0x0800)


第四行”length 66: 210.45.123.249.27236 > 172.16.0.11.1111: Flags [S],seq 1624463808;
length 66表示以太幀長(zhǎng)度為66。 210.45.123.249.27236 表示這個(gè)包的源IP為210.45.123.249,源端口為27236,’>’表示數(shù)據(jù)包的傳輸方向, 172.16.0.11.1111, 表示這個(gè)數(shù)據(jù)包的目的端ip為172.16.0.11,目標(biāo)端口為1111,1111端口是我的一個(gè)web服務(wù)器監(jiān)聽(tīng)端口。Flags是[S],表明是syn建立連接包(即三次握手的第一次握手),seq1624463808 序號(hào)為1624463808,這個(gè)其實(shí)就是TCP三次握手的第一次握手:clien)發(fā)送syn請(qǐng)求建立連接包


第五行” win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0”
win 8192 表示窗口大小為8192字節(jié)。options[mss 1460,nop,wscale 2,nop,nop,sackOK]為tcp首部可選字段mss 1460表示mss是發(fā)送端(客戶端)通告的最大報(bào)文段長(zhǎng)度,發(fā)送端將不接收超過(guò)這個(gè)長(zhǎng)度的TCP報(bào)文段(這個(gè)值和MTU有一定關(guān)系)。nop是一個(gè)空操作選項(xiàng), wscale指出發(fā)送端使用的窗口擴(kuò)大因子為2, sackOK 表示發(fā)送端支持并同意使用SACK選

  • tcpdump 示例
~~ 只查目標(biāo)機(jī)器端口是21或80的網(wǎng)絡(luò)包,其他端口不關(guān)注 # tcpdump -i eth0 -c 10 'dst port 21 or dst port 80' ~~ 想獲取172.16.10.11 和 google.com之間建立TCP三次握手中帶有SYN標(biāo)記位的網(wǎng)絡(luò)包. # tcpdump -i eth0 'host 172.16.0.11 and host google.com and tcp[13]&2!=0' -c 3 -nn 復(fù)制代碼
  • 最后一命令的 tcp[13]&2!=0 可能有點(diǎn)怪,這里解析一下,標(biāo)志位(URG,ACK,PSH,RST,SYN,FIN)在 tcp頭部的第 13 個(gè)字節(jié)中,而 SYN 則在低第二位(xxxxxx10,十進(jìn)制是2),和2進(jìn)行與操作,即可判斷報(bào)文是否 syn 報(bào)文

nc

  • nc 命令實(shí)現(xiàn)任意TCP/UDP端口的偵聽(tīng),nc可以作為 server 以TCP或UDP方式偵聽(tīng)指定端口。nc 也可以作為 client 發(fā)起TCP或UDP連接
options 常用參數(shù) -l 用于指定nc將處于偵聽(tīng)模式。指定該參數(shù),則意味著nc被當(dāng)作server,偵聽(tīng)并接受連接,而非向其它地址發(fā)起連接。 -s 指定發(fā)送數(shù)據(jù)的源IP地址,適用于多網(wǎng)卡機(jī) -u 指定nc使用UDP協(xié)議,默認(rèn)為T(mén)CP -v 輸出交互或出錯(cuò)信息,新手調(diào)試時(shí)尤為有用 -w 超時(shí)秒數(shù),后面跟數(shù)字 -z 使用 Zero-I/O mode,只在掃描通信端口時(shí)使用 復(fù)制代碼
  • nc 示例
~~ 端口掃描 # nc -v -w 2 192.168.2.34 -z 21-24 nc: connect to 192.168.2.34 port 21 (tcp) failed: Connection refused Connection to 192.168.2.34 22 port [tcp/ssh] succeeded! ~~ 簡(jiǎn)單聊天工具 在 192.168.2.34 服務(wù)端監(jiān)聽(tīng) 1211 # nc -l 1211 ~~ 在 192.168.2.33 上 連接 34 的 1211端口 # nc 192.168.2.34 1211 復(fù)制代碼

curl

  • curl 是一款很強(qiáng)大的 http 命令行工具。它支持文件的上傳和下載。命令格式:curl [option] [url]
option 常用參數(shù) -A/--user-agent <string> 設(shè)置用戶代理發(fā)送給服務(wù)器 -b <name=string/file> cookie字符串或文件讀取位置 -c <file> 操作結(jié)束后把cookie寫(xiě)入到這個(gè)文件中 -C <offset> 斷點(diǎn)續(xù)轉(zhuǎn) -D <file> 把header信息寫(xiě)入到該文件中 -e 來(lái)源網(wǎng)址(偽造referer) -o 把輸出寫(xiě)到該文件中 -O 把輸出寫(xiě)到該文件中,保留遠(yuǎn)程文件的文件名 -r <range> 分塊下載來(lái)自HTTP或FTP服務(wù)器 range字節(jié) -T <file> 上傳文件 -u <user[:password]> 設(shè)置服務(wù)器的用戶和密碼 -L 參數(shù)會(huì)讓 HTTP 請(qǐng)求跟隨服務(wù)器的重定向。curl 默認(rèn)不重定向 -x <host:port> 在給定的端口上使用HTTP代理 -# 進(jìn)度條顯示當(dāng)前的傳送狀態(tài) -X 指定 HTTP 請(qǐng)求的方法 -d POST方式傳送數(shù)據(jù)(默認(rèn)是application/x-www-form-urlencoded) -H/--header <line> 自定義頭信息傳遞給服務(wù)器 復(fù)制代碼
  • curl 示例
~~ 顯示下載進(jìn)度條 # curl -# -O ~~ 上傳文件 # curl -T lwl.jpg -u 用戶名:密碼 ~~ 發(fā)出 POST 請(qǐng)求 # curl -X POST ~~ da 是json 數(shù)據(jù) # curl localhost:3000/api/json -X POST -d @da --header "Content-Type: application/json" 復(fù)制代碼

wget

  • wget 是一個(gè)下載文件的工具,對(duì)于Linux用戶是必不可少的工具,因?yàn)槲覀兘?jīng)常要下載一些軟件或從遠(yuǎn)程服務(wù)器恢復(fù)備份到本地服務(wù)器。wget支持HTTP,HTTPS和FTP協(xié)議。命令格式:wget [-options] [url]
options 常用參數(shù)解析 -O <fileName> 把文檔寫(xiě)到FILE文件中 -c (斷點(diǎn)續(xù)傳)接著下載沒(méi)下載完的文件 -P filePath 將文件保存到 filePath 目錄 -b 后臺(tái)下載 TP 選項(xiàng): --ftp-user=USER 設(shè)置 ftp 用戶名為 USER --ftp-password=PASS 設(shè)置 ftp 密碼為 PASS 復(fù)制代碼
  • wget 示例
~~ wget -b 后臺(tái)下載 # wget -c -b -O word https://cn.wordpress.org/wordpress-4.9.4-zh_CN. ~~ ftp 下載 c 文件 # wget --ftp-user=baidu --ftp-password=123 ftp://192.168.19.1/lwl/c 復(fù)制代碼

7 shell 腳本命令

shell 程序語(yǔ)法

  • 要想寫(xiě)shell 腳本,則需要熟悉下 shell 程序基本語(yǔ)法
  • 之前寫(xiě)的一篇文章:shell教程及腳本編寫(xiě)

sed

  • 如果涉及到文本處理,可試試 sed,sed 采用的是流編輯模式,在 sed 處理數(shù)據(jù)之前,需要預(yù)先提供一組規(guī)則,sed 會(huì)按照此規(guī)則來(lái)編輯數(shù)據(jù)
  • 之前寫(xiě)的一篇文章:sed教程-linux命令

awk

  • awk 同樣適合處理文本,且更強(qiáng)大; 和 sed 命令類似,awk 命令也是逐行掃描文件,尋找含有目標(biāo)文本的行,如果匹配成功,則會(huì)在該行上執(zhí)行用戶想要的操作;反之,則不對(duì)行做任何處理
  • 之前寫(xiě)的一篇文章:awk教程-linux命令

xargs

  • xargs 是一個(gè)強(qiáng)有力的命令,在 linux 命令管道傳遞中,它能夠捕獲上一個(gè)命令的輸出,然后傳遞給另外一個(gè)命令。xargs 默認(rèn)的命令是 echo,這意味著通過(guò)管道傳遞給 xargs 的輸入將會(huì)包含換行和空白,不過(guò)通過(guò) xargs 的處理,換行和空白將被空格取代
  • 命令格式:command |xargs [-options] nextCommand
options 參數(shù)解釋 -e flag 或 -E flag flag必須是一個(gè)以空格分隔的標(biāo)志,當(dāng)xargs分析到含有flag這個(gè)標(biāo)志的時(shí)候就停止 -r no-run-if-empty 當(dāng)xargs的輸入為空的時(shí)候則停止xargs,不再去執(zhí)行 -t 表示先打印命令,然后再執(zhí)行 -p 每執(zhí)行一次xargs 后面跟隨的 nextCommand 時(shí),詢問(wèn)一次用戶 -n num 將輸出數(shù)據(jù)用"空格"分割成多個(gè)參數(shù),再按n個(gè)一組分批作為 nextCommand 執(zhí)行時(shí)的參數(shù) -L num 或 -l num 從標(biāo)準(zhǔn)輸入一次讀取 num 行送給 nextCommand 命令執(zhí)行 -i 或 -I 將一行一行賦值給占位符 {},在接下來(lái)的command里用 {} 替換數(shù)據(jù) -s num 命令行的最大字符數(shù),指的是 xargs 后面那個(gè)命令的最大命令行字符數(shù) -d delim 指定分隔符,默認(rèn)的xargs分隔符是回車(換行鍵),這里修改的是xargs的分隔符 復(fù)制代碼
  • xargs 示例
~~ 復(fù)制所有圖片文件到 /data/images 目錄下 # ls *.jpg | xargs -n1 -I {} cp {} /data/images ~~ 查找所有的 jpg 文件,并且壓縮它們 # find . -type f -name "*.jpg" -print | xargs tar -czvf images. 復(fù)制代碼

8 jvm 常用命令

jps

  • java 版的 ps 命令,查看java進(jìn)程及其相關(guān)的信息,如果想找到一個(gè) java 進(jìn)程的 pid,那可以用 jps 命令替代linux中的 ps 命令了,命令格式: jps [-options] [hostIP]。如果要查看其他 hostIP 機(jī)器上的jvm進(jìn)程,需要在待查看機(jī)器上啟動(dòng) jstatd
options 參數(shù)解釋 -l : 輸出主類全名或jar路徑 -q : 只輸出LVMID -m : 輸出JVM啟動(dòng)時(shí)傳遞給main()的參數(shù) -v : 輸出JVM啟動(dòng)時(shí)顯示指定的JVM參數(shù) 復(fù)制代碼
  • jps 示例
# jps -lmv 18884 /opt/app/spring-boo -- 39812 /opt/app/spring-boo -- 復(fù)制代碼

jinfo

  • jinfo 是用來(lái)查看JVM參數(shù)和動(dòng)態(tài)修改部分JVM參數(shù)的命令;命令格式:jinfo [-option] <pid>
options 參數(shù)解釋 -flag <name> 打印指定名稱的參數(shù) -flag [+|-]<name> 打開(kāi)或關(guān)閉參數(shù) -flag <name>=<value> 設(shè)置參數(shù) -flags 打印所有參數(shù) -sysprops 打印系統(tǒng)配置 默認(rèn)是 flags 和 sysprops 復(fù)制代碼
  • jinfo 示例
# jinfo -flags 19092 Attaching to process ID 19092, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.181-b13 Non-default VM flags: -XX:-BytecodeVerificationLocal -XX:-BytecodeVerificationRemote -XX:CICompilerCount=4 -XX:InitialHeapSize=266338304 -XX:+ManagementServer -XX:Max HeapSize=4229955584 -XX:MaxNewSize=1409810432 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=88604672 -XX:OldSize=177733632 -XX:TieredStopAtLevel=1 -XX:+UseCompressedClassP ointers -XX:+UseCompressedOops ..... 復(fù)制代碼

jstat

  • jstat 命令是使用頻率比較高的命令,主要用來(lái)查看JVM運(yùn)行時(shí)的狀態(tài)信息,包括內(nèi)存狀態(tài)、垃圾回收等;命令格式:jstat [-option] pid [interval] [count],pid 是進(jìn)程id,interval 是打印間隔時(shí)間(毫秒),count是打印次數(shù)(默認(rèn)一直打?。?/li>
option 參數(shù)解釋 -class : class loader的行為統(tǒng)計(jì) -compiler : HotSpt JIT編譯器行為統(tǒng)計(jì) -gc : 垃圾回收堆的行為統(tǒng)計(jì) -gccapacity : 各個(gè)垃圾回收代容量(young,old,perm)和他們相應(yīng)的空間統(tǒng)計(jì) -gcutil : 垃圾回收統(tǒng)計(jì)概述 -gccause : 垃圾收集統(tǒng)計(jì)概述(同-gcutil),附加最近兩次垃圾回收事件的原因 -gcnew : 新生代行為統(tǒng)計(jì) -gcnewcapacity : 新生代與其相應(yīng)的內(nèi)存空間的統(tǒng)計(jì) -gcold : 年老代和永生代行為統(tǒng)計(jì) -gcoldcapacity : 年老代行為統(tǒng)計(jì) -gcpermcapacity : 永生代行為統(tǒng)計(jì) -printcompilation : HotSpot編譯方法統(tǒng)計(jì) 復(fù)制代碼
  • jstat 示例
# jstat -gcutil 18884 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 84.14 19.93 45.77 91.32 87.65 641 18.311 6 3.512 21.824 ------各項(xiàng)指標(biāo)解析---------------------------------------- S0 第 0 個(gè) survivor(幸存區(qū))使用的百分比 S1 第 1 個(gè) survivor(幸存區(qū))使用的百分比 E Eden 區(qū)使用內(nèi)存的百分比 O 老生代內(nèi)存使用的百分比 P/M PermGen/MetaSpace 的內(nèi)存使用百分比 YGC 程序啟動(dòng)以來(lái) Young GC 發(fā)生的次數(shù) YGCT 程序啟動(dòng)以來(lái) Young GC 共消耗的時(shí)間(s) FGC 程序啟動(dòng)以來(lái) Full GC 發(fā)生的次數(shù) FGCT 程序啟動(dòng)以來(lái) Full GC 共消耗的時(shí)間(s) GCT 程序啟動(dòng)以來(lái) GC 的總用時(shí)(s) 復(fù)制代碼

jstack

  • jstack 是用來(lái)查看 jvm 線程快照的命令,線程快照是當(dāng)前JVM線程正在執(zhí)行的方法堆棧集合。使用 jstack 命令可以定位線程出現(xiàn)長(zhǎng)時(shí)間卡頓的原因,例如死鎖,死循環(huán)等。jstack 還可以查看程序崩潰時(shí)生成的 core 文件中的 stack 信息;命令格式:jstack [-Flm] <pid>
option 參數(shù)解釋 -F 當(dāng)使用jstack <pid>無(wú)響應(yīng)時(shí),強(qiáng)制輸出線程堆棧 -m 同時(shí)輸出java和本地堆棧(混合模式) -l 額外顯示鎖信息 (小寫(xiě)l) 復(fù)制代碼
  • jstack 示例,查看 pid = 1211 的線程棧
# jstack -l 1211 "DiscoveryClient-CacheRefreshExecutor-0" #146 daemon prio=5 os_prio=0 tid=0x000000002ba2c000 nid =0x4fe4 waiting on condition [0x000000002cade000] java.lang.T: WAITING (parking) at (Native Method) - parking to wait for <0x00000006c775dc60> (a java.u$Tra nsferStack) ...... 復(fù)制代碼

jmap

  • jmap 是用來(lái)生成堆dump文件 或 查看堆相關(guān)的各類信息的命令,例如查看 finalize 執(zhí)行隊(duì)列,heap 的詳細(xì)信息和使用情況;命令格式:jmap [-option] <pid>
option 參數(shù)解釋 -heap 打印java heap摘要 -histo[:live] 打印堆中的java對(duì)象統(tǒng)計(jì)信息 -clstats 打印類加載器統(tǒng)計(jì)信息 -finalizerinfo 打印在f-queue中等待執(zhí)行finalizer方法的對(duì)象 -dump:<dump-options> 生成java堆的dump文件       dump-options:       live 只轉(zhuǎn)儲(chǔ)存活的對(duì)象,如果沒(méi)有指定則轉(zhuǎn)儲(chǔ)所有對(duì)象       format=b 二進(jìn)制格式       file=<file> 轉(zhuǎn)儲(chǔ)文件到 <file> -F 如果jvm掛起,可用-F強(qiáng)制執(zhí)行選項(xiàng),會(huì)影響java 服務(wù) 復(fù)制代碼
  • jmap 示例,dump 出 pid=1211 java進(jìn)程的內(nèi)存堆文件
# jmap -dump:live,format=b,file=dump.hprof 1211 Dumping heap to /home/lwl ... Heap dump file created 復(fù)制代碼

歡迎指正文中錯(cuò)誤

1.《【奧迪死鎖怎么解除】開(kāi)發(fā)必備linux命令大全-穩(wěn)賺不虧》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。

2.《【奧迪死鎖怎么解除】開(kāi)發(fā)必備linux命令大全-穩(wěn)賺不虧》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。

3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/auto/3171159.html

上一篇

【奧迪臭味怎么消除方法】百萬(wàn)奧迪也甲醛超標(biāo)?德國(guó)發(fā)明植物黑科技,噴完10秒除醛消異味

【奧迪死鎖怎么解除】GNEV特稿 | 自動(dòng)駕駛臨界點(diǎn):最少五年,最多十年

【奧迪死鎖怎么解除】GNEV特稿 | 自動(dòng)駕駛臨界點(diǎn):最少五年,最多十年

奧迪死鎖怎么解除相關(guān)介紹,2015年,汽車行業(yè)變革突然加速,自動(dòng)駕駛汽車攜帶智能化和互聯(lián)網(wǎng)的技術(shù)基因?yàn)槲覀兎_(kāi)了未來(lái)汽車的圖景,科技公司和汽車巨頭們用他們的理解和想象描繪出了智能化汽車的樣子。 國(guó)際研究機(jī)構(gòu)Gartner發(fā)布的...

【奧迪死鎖怎么解除】載你駛向未來(lái)的無(wú)人駕駛車

【奧迪死鎖怎么解除】載你駛向未來(lái)的無(wú)人駕駛車

奧迪死鎖怎么解除相關(guān)介紹,說(shuō)到無(wú)人駕駛汽車,人們立刻想到了谷歌,這一印象仍然抓住了人們的心。 畢竟自從Google在2010年首度對(duì)外宣布無(wú)人駕駛車測(cè)試計(jì)劃以來(lái),至今「Google Self-Driving Car」(見(jiàn)圖一)...