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內存,及被內核使用的buffer
- iostat----用于輸出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#管理一枚。歡迎大家進來交流技術。
?
總結
以上是生活随笔為你收集整理的Linux运维实用命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 倍福触摸屏维修操作面板维修CP7032-
- 下一篇: linux 其他常用命令