Linux(六):系統運維常用命令

糖拌蕃茄發表於2021-04-11

實際的生產環境下,不論是研發還是運維,或多或少的得面對在linux上定位問題這個關卡,這裡介紹一下linux環境下一些狀態檢視常用的命令。

系統資源監控

總體資源佔用情況檢視

命令:top  

像windows一樣,linux也有一個“程式管理”,可以在命令列執行 top ,就可以整體的檢視當前機器的資源及程式情況。

這裡第一行 (top)  顯示的資訊包含: 

系統時間:19:27:01

執行時間:up 54 min,

當前登入使用者:  1 user

負載均衡(uptime)  load average: 0.02, 0.03, 0.00

     average後面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。

load average資料是每隔5秒鐘檢查一次活躍的程式數,然後按特定演算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了

第二行 (Tasks)顯示的當前的程式整體統計

第三行 (%CPU)是CPU狀態資訊,具體為:

0.0%us【user space】— 使用者空間佔用CPU的百分比。

0.1%sy【sysctl】— 核心空間佔用CPU的百分比。

0.0%ni【】— 改變過優先順序的程式佔用CPU的百分比

99.9%id【idolt】— 空閒CPU百分比

0.0%wa【wait】— IO等待佔用CPU的百分比

0.0%hi【Hardware IRQ】— 硬中斷佔用CPU的百分比

0.0%si【Software Interrupts】— 軟中斷佔用CPU的百分比

  第四行 (KiB Mem)整體記憶體的狀態,分別為總量,已用,空閒,快取

第五行 (KiB Swap)交換區記憶體

最後是各程式的狀況

這裡說一下第四行和第五行,第四行中使用中的記憶體總量(used)指的是現在系統核心控制的記憶體數,空閒記憶體總量(free)是核心還未納入其管控範圍的數量。

對於記憶體監控,也就是說我們對於記憶體的監控主要是看第五行swap交換分割槽的used,如果這個數值在不斷的變化,說明核心在不斷進行記憶體和swap的資料交換,這是真正的記憶體不夠用了。

命令:top -p [pid]

除了整體來看,我們也可以鎖定單個程式的資源情況進行檢視。

例如: top -p 1864

詳細內容為

PID — 程式id
USER — 程式所有者
PR — 程式優先順序
NI — nice值。負值表示高優先順序,正值表示低優先順序
VIRT — 程式使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
RES — 程式使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
SHR — 共享記憶體大小,單位kb
S —程式狀態。D=不可中斷的睡眠狀態 R=執行 S=睡眠 T=跟蹤/停止 Z=殭屍程式
%CPU — 上次更新到現在的CPU時間佔用百分比
%MEM — 程式使用的實體記憶體百分比
TIME+ — 程式使用的CPU時間總計,單位1/100秒
COMMAND — 程式名稱(命令名/命令列)

計算機埠關聯程式檢視

  這裡也是我們最經常用到的,不管是安裝新應用,還是排查應用的程式情況,都需要一個去了解埠是否被佔用,或者根據埠來拿到一個程式的pid。

命令:lsof -i: [埠號]

例如:lsof -i:22

    

這裡,我們以檢視22埠被監聽的程式為例,這一就能得出,22這個埠被哪一程式監聽,從而得到Pid等多個引數。

COMMAND 程式名稱 | PID 程式識別符號 | USER 程式所有者 | FD 檔案描述符 | TYPE 檔案型別 | DEVICE 指定磁碟名稱|SIZE 檔案大小 | NODE 索引節點 | NAME 開啟檔案的確切名稱

有些系統可能並沒有lsof命令,如果系統在網際網路環境下,可以執行 yum install lsof 進行安裝。

命令:netstat -tunlp | grep [埠號]

有些環境下的linux可能並沒有安裝lsof,並不支援lsof命令,我們又無法安裝losf的時候,我們可以使用linux自帶的netstat來定位。

例如: netstat -tunlp | grep 22

這裡,根據netstat提供的資訊,可以知道哪些程式在監聽22埠,並且得知程式唯一標識pid 。

關於 netstat命令的其他引數這裡不過多解釋,可以自行某度,同樣,若系統無該命令,可以使用 yum -y install net-tools 進行安裝。

計算機記憶體狀態檢視

命令:free -g

除了前面的top可以檢視記憶體的情況,也可以單獨的檢視當前linux記憶體的狀況,那就是 free -g 命令

例如:free -g

詳細欄位解釋為:

total:表示 總計實體記憶體的大小。

used:表示 已使用多少。

free:表示 可用記憶體多少。

Shared:表示多個程式共享的記憶體總額。

Buffers/cached:表示 磁碟快取的大小。

這裡對於記憶體的監控同top一樣,我們還是主要關心 swap 這一欄。

命令:cat /proc/meminfo

確切地說,這個不能叫做命令,只是一個開啟系統級引數檔案的檢視,proc目錄下放著系統的一些資源情況的檔案。

清空快取:echo3 >/proc/sys/vm/drop_caches

當在Linux下頻繁存取檔案後,實體記憶體會很快被用光,當程式結束後,記憶體不會被正常釋放,而是一直作為caching,一直被佔用著,會導致上面的top以及free命令檢視的記憶體計算不夠準確,這時候我們可以通過執行 echo3 >/proc/sys/vm/drop_caches 來進行手動釋放快取。

關於清除快取的詳細細節可以看一下 https://blog.csdn.net/qq_36357820/article/details/79798788

計算機CPU狀態檢視

命令:cat /proc/cpuinfo

和上面的記憶體一樣,這也是在proc這個目錄下檢視當前機器的cpu狀況

例如:cat /proc/cpuinfo

詳細欄位解釋:

processor :系統中邏輯處理核的編號。對於單核處理器,則課認為是其CPU編號,對於多核處理器則可以是物理核、或者使用超執行緒技術虛擬的邏輯核
vendor_id :CPU製造商     
cpu family :CPU產品系列代號
model   :CPU屬於其系列中的哪一代的代號
model name:CPU屬於的名字及其編號、標稱主頻
stepping   :CPU屬於製作更新版本
cpu MHz   :CPU的實際使用主頻
cache size   :CPU二級快取大小
physical id   :單個CPU的標號
siblings       :單個CPU邏輯物理核數
core id        :當前物理核在其所處CPU中的編號,這個編號不一定連續
cpu cores    :該邏輯核所處CPU的物理核數
apicid          :用來區分不同邏輯核的編號,系統中每個邏輯核的此編號必然不同,此編號不一定連續
fpu             :是否具有浮點運算單元(Floating Point Unit)
fpu_exception  :是否支援浮點計算異常
cpuid level   :執行cpuid指令前,eax暫存器中的值,根據不同的值cpuid指令會返回不同的內容
wp             :表明當前CPU是否在核心態支援對使用者空間的防寫(Write Protection)
flags          :當前CPU支援的功能
bogomips   :在系統核心啟動時粗略測算的CPU速度(Million Instructions Per Second)
clflush size  :每次重新整理快取的大小單位
cache_alignment :快取地址對齊單位
address sizes     :可訪問地址空間位數
power management :對能源管理的支援,有以下幾個可選支援功能:

  ts:  temperature sensor

  fid:   frequency id control

  vid:  voltage id control

  ttp:  thermal trip

  tm:

  stc:

  100mhzsteps:

  hwpstate:

 

命令:uptime

如果再細緻一點,檢視當前系統的負載情況,可以使用 uptime來進行檢視

例如:uptime

 

這裡,第一項是當前時間,up 表示系統正在執行,5:53 是系統啟動的總時間,最後是系統的負載load資訊。

系統負載是處於可執行runnable或不可中斷uninterruptable狀態的程式的平均數。可執行狀態的程式要麼正在使用 CPU 要麼在等待使用 CPU。 
不可中斷狀態的程式則正在等待某些 I/O 訪問,例如等待磁碟 IO。 有三個時間間隔的平均值。負載均值的意義根據系統中 CPU 的數量不同而不同,負載為 1 對於一個只有單 CPU 的系統來說意味著負載滿了,而對於一個擁有
4 CPU 的系統來說則意味著 75% 的時間裡都是空閒的。

計算機儲存狀態檢視

命令:df -h

可以對整體的Linux進行一下磁碟整體使用情況的檢視

例如:df -h

Filesystem:檔案系統

Size: 分割槽大小

Used: 已使用容量

Avail: 還可以使用的容量

Use%: 已用百分比

Mounted on: 掛載點

此外,還有部分額外命令

df -hl:檢視磁碟剩餘空間

df -h:檢視每個根路徑的分割槽大小

du -sh [目錄名]:返回該目錄的大小

du -sm [資料夾]:返回該資料夾總M數

du -h [目錄名]:檢視指定資料夾下的所有檔案大小(包含子資料夾)

殺死程式

命令:kill 

殺死一個程式 ,在linux中我們使用kill命令,kill命令的基本格式是 kill [引數] [程式號],這裡要說一下這個引數位置,這個引數可放kill的基本引數,具體這裡就不多說了,可以自行去了解,另外可以放訊號,訊號的意思是向作業系統傳送一個殺死程式的命令,並攜帶額外的資訊,例如是強制殺死,還是由你係統稍後殺死。

kill命令可以帶訊號號碼選項,也可以不帶。如果沒有訊號號碼,kill命令就會發出終止訊號(15),這個訊號可以被程式捕獲,使得程式在退出之前可以清理並釋放資源。也可以用kill向程式傳送特定的訊號。

例如我想強制殺死一個程式,立即執行,那訊號值為9 即:kill -9 12342

 

相關文章