Linux運維實用命令
(尊重勞動成果,轉載請註明出處:https://blog.csdn.net/qq_25827845/article/details/83956874冷血之心的部落格)
目錄
top----Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況
free----顯示Linux系統中空閒的、已用的實體記憶體及swap記憶體,及被核心使用的buffer
iostat----用於輸出CPU和磁碟I/O相關的統計資訊
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#管理一枚。歡迎大家進來交流技術。