1. 程式人生 > >Linux運維實用命令

Linux運維實用命令

(尊重勞動成果,轉載請註明出處:https://blog.csdn.net/qq_25827845/article/details/83956874冷血之心的部落格)

目錄

top----Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況

 系統執行時間和平均負載

任務

CPU 狀態

記憶體使用

程序資訊:

uptime----檢視系統負載

free----顯示Linux系統中空閒的、已用的實體記憶體及swap記憶體,及被核心使用的buffer

iostat----用於輸出CPU和磁碟I/O相關的統計資訊

netstat----用於顯示各種網路相關資訊

df----列出檔案系統的整體磁碟空間使用情況

du----用於顯示目錄或檔案的大小

ps----命令用於顯示當前程序 (process) 的狀態

ping----常用的網路命令,它通常用來測試與目標主機的連通性

總結


做為一名優秀的Java開發工程師,我們必不可少的會用到以下幾個命令:

  • top----Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況
  • uptime----檢視系統負載
  • free----顯示Linux系統中空閒的、已用的實體記憶體及swap記憶體,及被核心使用的bufferiostat----用於輸出CPU和磁碟I/O相關的統計資訊
  • netstat----用於顯示各種網路相關資訊
  • df----列出檔案系統的整體磁碟空間使用情況
  • du----用於顯示目錄或檔案的大小
  • ps----命令用於顯示當前程序 (process) 的狀態
  • ping----常用的網路命令,它通常用來測試與目標主機的連通性

接下來我們開始介紹各個命令的輸出。

top----Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況

         Linux中的top命令顯示系統上正在執行的程序。它是系統管理員最重要的工具之一。被廣泛用於監視伺服器的負載。top命令的輸出如下:

在上邊的輸出中,前五行水平顯示了不同系統引數的概括,接下來是程序和它們在列中的屬性。

 系統執行時間和平均負載

第一行顯示的資訊的含義表示如下:

  • 當前時間

  • 系統已執行的時間

  • 當前登入使用者的數量

  • 相應最近5、10和15分鐘內的平均負載。

任務

第二行顯示的是任務或者程序的總結。程序可以處於不同的狀態。這裡顯示了全部程序的數量。除此之外,還有正在執行、睡眠、停止、殭屍程序的數量(殭屍是一種程序的狀態)。

CPU 狀態

第三行顯示的是CPU狀態。 這裡顯示了不同模式下的所佔CPU時間的百分比。這些不同的CPU時間表示:

  • us, user: 執行(未調整優先順序的) 使用者程序的CPU時間

  • sy,system: 執行核心程序的CPU時間

  • ni,niced:執行已調整優先順序的使用者程序的CPU時間

  • wa,IO wait: 用於等待IO完成的CPU時間

  • hi:處理硬體中斷的CPU時間

  • si: 處理軟體中斷的CPU時間

  • st:這個虛擬機器被hypervisor偷去的CPU時間(譯註:如果當前處於一個hypervisor下的vm,實際上hypervisor也是要消耗一部分CPU處理時間的)。

記憶體使用

第四和第五行顯示記憶體使用率,第一行是實體記憶體使用,第二行是虛擬記憶體使用(交換空間)。

實體記憶體顯示如下:

  • 全部可用記憶體
  • 已使用記憶體
  • 空閒記憶體
  • 緩衝記憶體。

交換部分顯示如下:

  • 全部可用記憶體
  • 已使用記憶體
  • 空閒記憶體
  • 緩衝交換空間。

程序資訊:

接下來顯示的當前機器中各個程序的資訊,如下所示:

各個欄位表示的含義如下:

  • PID:程序ID,程序的唯一識別符號
  • USER:程序所有者的實際使用者名稱
  • PR:程序的排程優先順序。這個欄位的一些值是’rt’。這意味這這些程序執行在實時態。
  • NI:程序的nice值(優先順序)。越小的值意味著越高的優先順序。
  • VIRT:程序使用的虛擬記憶體。
  • RES:駐留記憶體大小。駐留記憶體是任務使用的非交換實體記憶體大小。
  • SHR:SHR是程序使用的共享記憶體。
  • S:這個是程序的狀態。它有以下不同的值:
    • D – 不可中斷的睡眠態。

    • R – 執行態

    • S – 睡眠態

    • T – 被跟蹤或已停止

    • Z – 殭屍態

  • %CPU:自從上一次更新時到現在任務所使用的CPU時間百分比。

  • %MEM:程序使用的可用實體記憶體百分比。

  • TIME+:任務啟動後到現在所使用的全部CPU時間,精確到百分之一秒。

  • COMMAND:執行程序所使用的命令。

當我們想檢視每個程序中的所有執行緒的情況時,需要使用 top -h -p pid 命令,輸出如下所示:

當我們指定要檢視某個程序內部的各個執行緒的情況時,在輸出的第二行就變成了 Threads 而不是之前的 Tasks
 

uptime----檢視系統負載

其實top命令的第一行就是系統的負載,我們也可以使用uptime來單獨檢視。

重點關注引數:

load average 代表了最近1分鐘,5分鐘,15分鐘CPU的平均負載情況。CPU核數乘以0.7,即如果CPU總核數為4,當load average上15分鐘的數值達到2.8時,系統需要處理。

 

free----顯示Linux系統中空閒的、已用的實體記憶體及swap記憶體,及被核心使用的buffer

可以使用的引數如下:

  • -b:以Byte為單位顯示記憶體使用情況
  • -k:以KB為單位顯示記憶體使用情況
  • -m:以MB為單位顯示記憶體使用情況
  • -g:以GB為單位顯示記憶體使用情況
  • -o:不顯示緩衝區調節列
  • -s:持續觀察記憶體使用狀況
  • -t:顯示記憶體總和列
  • -V:顯示版本資訊

區別:

第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區別。 這兩個的區別在於使用的角度來看,第一行是從OS的角度來看,因為對於OS,buffers/cached 都是屬於被使用。

第三行所指的是從應用程式角度來看,對於應用程式來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高檔案讀取的效能,當應用程式需在用到記憶體的時候,buffer/cached會很快地被回收。

所以從應用程式的角度來說,可用記憶體=系統free memory+buffers+cached。

iostat----用於輸出CPU和磁碟I/O相關的統計資訊

iostat命令的用法:iostat [ 選項 ] [ <時間間隔> [ <次數> ]]

可以使用的引數包括:

  • -c:只顯示系統CPU統計資訊,即單獨輸出avg-cpu結果,不包括device結果
  • -d:單獨輸出Device結果,不包括cpu結果
  • -k/-m:輸出結果以kB/mB為單位,而不是以扇區數為單位
  • -x:輸出更詳細的io裝置統計資訊
  • interval/count:每次輸出間隔時間,count表示輸出次數,不帶count表示迴圈輸出

所表示的含義如下:

  • rrqm/s: 每秒對該裝置的讀請求被合併次數,檔案系統會對讀取同塊(block)的請求進行合併
  • wrqm/s: 每秒對該裝置的寫請求被合併次數
  • r/s: 每秒完成的讀次數
  • w/s: 每秒完成的寫次數
  • rkB/s: 每秒讀資料量(kB為單位)
  • wkB/s: 每秒寫資料量(kB為單位)
  • avgrq-sz:平均每次IO操作的資料量(扇區數為單位)
  • avgqu-sz: 平均等待處理的IO請求佇列長度
  • await: 平均每次IO請求等待時間(包括等待時間和處理時間,毫秒為單位)
  • svctm: 平均每次IO請求的處理時間(毫秒為單位)
  • %util: 採用週期內用於IO操作的時間比率,即IO佇列非空的時間比率

需要重點關注引數

1、avgqu-sz 表示磁碟IO佇列長度,即IO等待個數。

2、await 表示每次IO請求等待時間,包括等待時間和處理時間

3、svctm 表示每次IO請求處理的時間

4、%util 表示磁碟忙碌情況,一般該值超過80%表示該磁碟可能處於繁忙狀態。

netstat----用於顯示各種網路相關資訊

這個命令更加常用了,可以使用的引數如下:

  • -a:(all)顯示所有選項,netstat預設不顯示LISTEN相關
  • -t:(tcp)僅顯示tcp相關選項
  • -u:(udp)僅顯示udp相關選項
  • -n:拒絕顯示別名,能顯示數字的全部轉化成數字
  • -l:僅列出有在:Listen:(監聽):的服務狀態
  • -p:顯示建立相關連結的程式名
  • -r:顯示路由資訊,路由表-e:顯示擴充套件資訊,例如uid等
  • -s:按各個協議進行統計
  • -c:每隔一個固定時間,執行該netstat命令

檢視當前所有tcp埠:netstat -nltp

檢視所有8080埠使用情況:netstat -an |grep 8080 

 

df----列出檔案系統的整體磁碟空間使用情況

該命令可選的引數如下:

df [選項] [檔名] 
引數: 

  • -a:--all,顯示所有的檔案系統,包括虛擬檔案系統
  • -B:--block-size,指定單位大小。比如1k,1m等
  • -h:--human-readable,以人們易讀的GB、MB、KB等格式顯示
  • -H:--si,和-h引數一樣,但是不是以1024,而是1000,即1k=1000,而不是1k=1024。
  • -i:--inodes,不用硬碟容量,而是以inode的數量來顯示
  • -k:以KB的容量顯示各檔案系統,相當於--block-size=1k
  • -m:以KB的容量顯示各檔案系統,相當於--block-size=1m
  • -l:--local,只顯示本地檔案系統
  • --no-sync:在統計使用資訊之前不呼叫sync命令(預設)。 
  • -sync:在統計使用資訊之前呼叫sync命令
  • -P:--portability,使用POSIX格式顯示
  • -t:--type=TYPE,只顯示指定型別的檔案系統
  • -T:--print-type,顯示檔案系統型別
  • -x:--exclude-type=TYPE,不顯示指定型別的檔案系統。 
  • --help:顯示幫助資訊。
  • --version:顯示版本資訊。

du----用於顯示目錄或檔案的大小

  • -a或-all  顯示目錄中個別檔案的大小。   
  • -b或-bytes  顯示目錄或檔案大小時,以byte為單位。   
  • -c或--total  除了顯示個別目錄或檔案的大小外,同時也顯示所有目錄或檔案的總和。 
  • -k或--kilobytes  以KB(1024bytes)為單位輸出。
  • -m或--megabytes  以MB為單位輸出。   
  • -s或--summarize  僅顯示總計,只列出最後加總的值。
  • -h或--human-readable  以K,M,G為單位,提高資訊的可讀性。
  • -x或--one-file-xystem  以一開始處理時的檔案系統為準,若遇上其它不同的檔案系統目錄則略過。 
  • -L<符號連結>或--dereference<符號連結> 顯示選項中所指定符號連結的原始檔大小。   
  • -S或--separate-dirs   顯示個別目錄的大小時,並不含其子目錄的大小。 
  • -X<檔案>或--exclude-from=<檔案>  在<檔案>指定目錄或檔案。   
  • --exclude=<目錄或檔案>         略過指定的目錄或檔案。    
  • -D或--dereference-args   顯示指定符號連結的原始檔大小。
  • -H或--si  與-h引數相同,但是K,M,G是以1000為換算單位。
  • -l或--count-links   重複計算硬體連結的檔案。  

du,disk usage,是通過搜尋檔案來計算每個檔案的大小然後累加,du能看到的檔案只是一些當前存在的,沒有被刪除的。它計算的大小就是當前他認為存在的所有檔案大小的累加和。
df,disk free,通過檔案系統來快速獲取空間大小的資訊,當我們刪除一個檔案的時候,這個檔案不是馬上就在檔案系統當中消失了,而是暫時消失了,當所有程式都不用時,才會根據OS的規則釋放掉已經刪除的檔案,df記錄的是通過檔案系統獲取到的檔案的大小,它比du強的地方就是能夠看到已經刪除 的檔案,而且計算大小的時候,把這一部分的空間也加上了,更精確了。
當檔案系統也確定刪除了該檔案後,這時候du與df就一致了。

ps----命令用於顯示當前程序 (process) 的狀態

  • -a 顯示同一終端下的所有程式
  • -A 顯示所有程序
  • c 顯示程序的真實名稱
  • -N 反向選擇
  • -e 等於“-A”
  • e 顯示環境變數
  • f 顯示程式間的關係
  • -H 顯示樹狀結構
  • r 顯示當前終端的程序
  • T 顯示當前終端的所有程式
  • u 指定使用者的所有程序
  • -au 顯示較詳細的資訊
  • -aux 顯示所有包含其他使用者的行程
  • -C<命令> 列出指定命令的狀況
  • –lines<行數> 每頁顯示的行數
  • –width<字元數> 每頁顯示的字元數
  • –help 顯示幫助資訊
  • –version 顯示版本顯示

eg.檢視與java相關的程序資訊:ps -ef|grep java

ping----常用的網路命令,它通常用來測試與目標主機的連通性

 

總結

        這篇文章比較詳細的介紹了常用的linux運維命令,這些命令對我們的日常工作效率的提高都有著顯著的作用,在此總結下來和大家一起學習,研究,掌握其最簡單的用法。

 

如果對你有幫助,記得點贊哦~歡迎大家關注我的部落格,可以進群366533258一起交流學習哦~

本群給大家提供一個學習交流的平臺,內設菜鳥Java管理員一枚、精通演算法的金牌講師一枚、Android管理員一枚、藍芽BlueTooth管理員一枚、Web前端管理一枚以及C#管理一枚。歡迎大家進來交流技術。