系統狀態統計和查看

来源:https://www.cnblogs.com/Template/archive/2018/05/24/9082773.html
-Advertisement-
Play Games

##/proc的意義在linux查看各種狀態,其實質是查看內核中相關進程的數據結構中的項通過工具將其格式化後輸出出來。但是內核的數據是絕對不能隨意查看或更改的,至少不能直接去修改。所以,在linux上出現了偽文件系統/proc,它是內核中各屬性或狀態向外提供訪問和修改的介面。##查看進程信息 pst ...


##/proc的意義
在linux查看各種狀態,其實質是查看內核中相關進程的數據結構中的項通過工具將其格式化後輸出出來。但是內核的數據是絕對不能隨意查看或更改的,至少不能直接去修改。所以,在linux上出現了偽文件系統/proc,它是內核中各屬性或狀態向外提供訪問和修改的介面。
##查看進程信息


pstree命令

選項說明:
  -a:顯示進程的命令行
  -c:展開分支
  -h:高亮顯示當前正在運行的進程及其父進程
  -p:顯示進程的pid,此選項也將展開分之
  -l:允許顯示長格式進程

ps命令


ps aux各列的意義


  %CPU:表示CPU占用百分比,計算方式是“進程占用CPU時間/CPU總時間”
  %MEM:表示各進程所占物理記憶體百分比
  VSZ:表示各進程占用的虛擬記憶體,也就是其線上性地址空間中占用的記憶體
  RSS:表示各進程占用的實際物理記憶體,單位為Kb
  TTY:表示屬於哪個終端,"?"表示不依賴於終端的進程
  TAT:進程所處的狀態
  D:不可中斷睡眠
  R:運行中或等待隊列中的進程(running/runnable)
  S:可中斷睡眠
  T:進程處於stopped狀態
  Z:僵屍進程
對於BSD風格的ps選項,進程的狀態還會顯示下麵幾個組合信息。
  <:高優先順序進程
  N:低優先順序進程
  L:該進程在記憶體中有被鎖定的頁
  s:表示該進程是session leader,即進程組的首進程。例如管道左邊的 進程,shell腳本中的shell進程
  l:表示該進程是一個線程
  +:表示是前段進程。前段進程一般來說都是依賴於終端的

  START:表示進程是何時被創建的
  TIME:表示各進程占用的CPU時間
  COMMAND:表示進程的命令行。如果是內核線程,則使用方括弧"[]"包圍


ps -elf


選項說明
  -e:輸出全部信息
  -f:全格式輸出
  -l:長格式輸出


各列的意義:
  F:程式的標誌位。0表示該程式只有普通許可權,4表示具有root超級管理員權 限,1表示該進程被創建的時候只進行了fork,沒有進行exec
  S:進程的狀態位,註意ps選項加了"-"的是非BSD風格選項,不會有"s""<""N ""+"等的狀態標識位
  C:CPU的百分比,註意衡量方式是時間
  PRI:進程的優先順序,值越小,優先順序越高,越早被調度類選中運行
  NI:進程的NICE值,值為-20到19,影響優先順序的方式是PRI(new)=PRI(old)+
  NI,所以NI為負數的時候,越小將導致進程優先順序越高。但是要註意NICE值
    只能影響非實時進程。可以通過 renice xx 22041(xx為nice值 22041進程號)
  ADDR:進程在物理記憶體中哪個地方
  SZ:進程占用的實際物理記憶體
  WCHAN:若進程處於睡眠狀態,將顯示其對應內核線程的名稱,若進程為R狀 態,則顯示"-"
  ps 後grep的問題:


在ps後加上grep篩選目標進程時,總會發現grep自身進程也被顯示出來。先解釋下為何會如此。
[root@xuexi ~]# ps aux | grep "crond"
root 1425 0.0 0.1 117332 1276 ? Ss Jun10 0:00 crond
root 8275 0.0 0.0 103256 856 pts/2 S+ 17:07 0:00 grep crond
通過管道將ps結果傳遞給grep時,管道協調了ps和grep兩進程間通信,但管道的本質是進程間數據傳遞。管道左邊的輸出數據放入記憶體,由管道右邊的進程讀取。假如劃分的記憶體不足以完全存放輸出數據,則管道左邊的進程將一直等待,直到管道右邊取出記憶體中一部分的數據以讓管道左邊的進程繼續輸出,而管道右邊的進程在管道左邊的進程啟動後也立刻啟動了,但是它一直處於等待狀態,等待接收管道傳遞來的數據(就像是平時執行命令時不給輸入文件將會一直等待輸入一樣)。

也就是說,管道左右兩端的進程是同時被創建的(不考慮父進程創建進程消耗的那點時間),但數據傳輸是有先後順序的,左邊先傳,右邊後收,所以可能會造成交叉的情況,左邊還沒執行完,就捕獲到了右邊的進程信息。在此處體現在ps還沒有統計完進程信息時,grep進程就已經被ps抓到了。

要將grep自身進程排除在結果之外,方法有二:

[root@xuexi ~]# ps aux | grep "crond" | grep -v "grep" # 使用-v將grep自己篩選掉
root 1425 0.0 0.1 117332 1276 ? Ss Jun10 0:00 crond

[root@xuexi ~]# ps aux | grep "cron[d]"
root 1425 0.0 0.1 117332 1276 ? Ss Jun10 0:00 crond
第二種方法能成功是因為grep進程被ps捕獲時的結果是"grep cron[d]",而使用cron[d]匹配時,grep將只能匹配crond,而不能匹配cron 所以"grep cron[d]"被篩選掉了。其實加上其他字元將更容易理解。

[root@xuexi ~]# ps aux | grep "cron[dabc]"
root 1425 0.0 0.1 117332 1276 ? Ss Jun10 0:00 crond

uptime命令
顯示當前時間,已開機運行多少時間,當前有多少用戶已登錄系統,以及3個平均負載值。
所謂負載率(load),即特定時間長度內,cpu運行隊列中的平均進程數(包括線程),一般平均每分鐘每核的進程數小於3都認為正常,大於5時負載就已經非常高
在UNIX系統中,運行隊列包括cpu正在執行的進程和等待cpu的進程(即所謂的可運行runable)。在Linux系統中,還包括不可中斷睡眠態(IO等待)的進程。運行隊列中每出現一個進程,load 就加1,進程每退出運行隊列,Load就減1。如果是多核cpu,則還要除以核數。
例如,單核cpu上的負載值為"1.73 0.60 7.98"時,表示:

  最近1分鐘:1.73表示平均可運行的進程數,這一分鐘要一直不斷地執行這1.73個進程。0.73個進程等待該核cpu。

  最近5分鐘:平均進程數還不足1,表示該核cpu在過去5分鐘空閑了40%的時間。

  最近15分鐘:7.98表示平均可運行的進程數,這15分鐘要一直不斷地執行這7.98個進程。

  結合前5分鐘的結果,說明前15-前10分鐘時間間隔內,該核cpu的負載非常高。

如果是多核cpu,則還要將結果除以核數。例如4核時,某個最近一分鐘的負載值為3.73,則意味著有3.73個進程在運行隊列中,這些進程可被調度至4核中的任何一個核上運行。最近1分鐘的負載值為1.6,表示這一分鐘內每核cpu都空閑(1-1.6/4)=60%的時間。所以,load的理想值是正好等於CPU的核數,小於核數的時候表示cpu有空閑,超出核數的時候表示有進程在等待cpu,即系統資源不足

##top、htop、以及iftop命令

top命令查看動態進程狀態,預設每5秒刷新一次。

top選項說明:


  -d:指定刷新的時間間隔,預設為5秒
  -b:批處理模式,每次刷新分批顯示
  -n:指定top刷新幾次就退出,可以配合-b使用
  -p:指定監控的pid,指定方式為-pN1 -pN2...或-pN1,N2 [,...]
  -u:指定要監控的用戶的進程,可以是uid也可以是user_name

在top動態模式下,按下各種鍵可以進行不同操作。使用"h"或"?"可以查看相關鍵的說明。

  1 :(數字一)表示是否要在top的頭部顯示出多個cpu信息
  H :表示是否要顯示線程,預設不顯示
  c,S : c表示是否要展開進程的命令行,S表示顯示的cpu時間是否是累積模式,cpu累積模式下已死去的子進程cpu時間會累積到父進程中
  x,y :x高亮排序的列,y表示高亮running進程
  u :僅顯示指定用戶的進程
  n or #:設置要顯示最大的進程數量
  k :殺進程
  q :退出top
  P :以CPU 的使用資源排序顯示
  M :以Memory 的使用資源排序顯示
  N :以PID 來排序以下是top的一次結果。

[root@xuexi ~]# top
top - 17:43:44 up 1 day, 14:16, 2 users, load average: 0.10, 0.06, 0.01
Tasks: 156 total, 1 running, 155 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004348k total, 417928k used, 586420k free, 52340k buffers
Swap: 2047996k total, 0k used, 2047996k free, 243800k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19364 1444 1132 S 0.0 0.1 0:00.96 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:01.28 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.59 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0


第1行:和w命令的第一行一樣,也和uptime命令的結果一樣。此行各列分別表示"當前時間"、"已開機時長"、"當前線上用戶"、"前1、5、15分鐘平均負載率"。
第2行:分別表示總進程數、running狀態的進程數、睡眠狀態的進程數、停止狀態進程數、僵屍進程數。
第3-6行:每顆cpu的狀況。
  us = user mode
  sy = system mode
  ni = low priority user mode (nice)(用戶空間中低優先順序進程的cpu占用百分比)
  id = idle task
  wa = I/O waiting
  hi = servicing IRQs(不可中斷睡眠,hard interruptible)
  si = servicing soft IRQs(可中斷睡眠,soft interruptible)
  st = steal (time given to other DomU instances)(被偷走的cpu時間,一般被虛擬化軟體偷走)
第7-8行:從字面意思理解即可。

  VIRT:虛擬記憶體總量

  RES:實際記憶體總量

  SHR:共用記憶體量

  TIME:進程占用的cpu時間(若開啟了時間累積模式,則此處顯示的是累積時間)

top命令雖然非常強大,但是太老了。所以有了新生代的top命令htop。htop預設沒有安裝,需要手動安裝。

##vmstat命令
註意vmstat的第一次統計是自開機起的平均值信息,從第二次開始的統計才是指定刷新時間間隔內的資源利用信息,若不指定刷新時間間隔,則預設只顯示一次統計信息。

vmstat [-d] [delay [ count]]
vmstat [-f]

選項說明:


  -f:統計自開機起fork的次數。包括fork、clone、vfork的次數。但不包括exec次數。
  -d:顯示磁碟統計信息。
  delay:刷新時間間隔,若不指定,則只統計一次信息就退出vmstat。
  count:總共要統計的次數。
例如,只統計一次信息。

[root@xuexi ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 583692 52684 244200 0 0 5 3 4 5 0 0 100 0 0
其中各列的意義如下:

Procs

  r: 等待隊列中的進程數

  b: 不可中斷睡眠的進程數

  Memory

  swpd: 虛擬記憶體使用總量

  free: 空閑記憶體量

  buff: buffer占用的記憶體量(buffer用於緩衝寫)

  cache: cache占用的記憶體量(cache用於緩存讀,諧音"快取",即為了加快取數據的速度)  

  Swap

si:從磁碟載入到swap分區的數據流量,單位為"kb/s"

so: 從swap分區寫到磁碟的數據流量,單位為"kb/s"


IO

  bi: 從塊設備接受到數據的速率,單位為blocks/s

  bo: 發送數據到塊設備的速率,單位為blocks/s
System

  in: 每秒中斷數,包括時鐘中斷數量

  cs: 每秒上下文切換次數


CPU:統計的是cpu時間百分比,具體信息和top的cpu統計列一樣

  us: Time spent running non-kernel code. (user time, including nice time)
  sy: Time spent running kernel code. (system time)
  id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
  wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
  st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
還可以統計磁碟的IO信息。統計信息的結果很容易看懂,所以略過。


##iostat命令
iostat主要統計磁碟或分區的整體使用情況。也可以輸出cpu信息,甚至是NFS網路文件系統的信息。同vmstat/sar一樣,第一次統計的都是自系統開機起的平均統計信息。

iostat [ -c ] [ -d ] [ -n -h ][ -k | -m ] [ -p [device][,...] ] [ interval [ count ] ]

選項說明:
  -c:統計cpu信息
  -d:統計磁碟信息
  -n:統計NFS文件系統信息
  -h:使NFS統計信息更人類可讀化
  -k:指定以kb/s為單位顯示
  -m:指定以mb/s為單位顯示
  -p:指定要統計的設備名稱
  -y:指定不顯示第一次統計信息,即不顯示自開機起的統計信息。
  interval:刷新時間間隔
  count:總統計次數
例如:

[root@xuexi ~]# iostat
Linux 2.6.32-504.el6.x86_64 (xuexi.longshuai.com) 06/11/2017 _x86_64_ (4 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.01 0.00 0.03 0.01 0.00 99.96

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.58 39.44 23.14 5557194 3259968
sdb 0.00 0.03 0.00 4256 0
各列的意義都很清晰,從字面即可理解。

tps:每秒transfer速率(transfers per second),一次對物理設備的IO請求為一個transfer,但多個邏輯請求可能只組成一個transfer
Blk_read/s:每秒讀取的block數量
Blk_wrtn/s:每秒寫入的block總數
Blk_read:讀取的總block數量
Blk_wrtn:寫入的總block數量

sar命令
sar是一個非常強大的性能分析工具,它可以獲取系統的cpu/等待隊列/磁碟IO/記憶體/網路等性能指標。

功能多的必然結果是選項多,應用複雜,但只要知道一些常用的選項足以。

sar [options] [-o filename] [delay [count] ]
選項說明:
-A:顯示系統所有資源運行狀況
-b:顯示磁碟IO和tranfer速率信息,和iostat的信息一樣,是總體IO統計信息
-d:顯示磁碟在刷新時間間隔內的活躍情況,可以指定一個或多個設備,和-b不同的是,它顯示的是單設備的IO、transfer信息。
      建議配合-p使用顯示友好的設備名,否則預設顯示帶主次設備號的設備名
-P:顯示指定的某顆或某幾顆cpu的使用情況。指定方式為,-P 0,1,2,3或ALL。
-u:顯示每顆cpu整體平均使用情況。-u和-P的區別通過下麵的示例很容易區分。
-r:顯示記憶體在刷新時間間隔內的使用情況
-n:顯示網路運行狀態。後可接DEV/NFS/NFSD/FULL等多種參數。
:DEV表示顯示網路介面信息,NFS和NFSD分別表示顯示NFS客戶端服務端的流量信息,FULL表示顯示所有信息。
-q:顯示等待隊列大小
-o filename:將結果存入到文件中
delay:狀態刷新時間間隔
count:總共刷新幾次

10.5.1 統計cpu使用情況
[root@server2 ~]# sar -P ALL 1 2
Linux 3.10.0-327.el7.x86_64 (server2.longshuai.com) 06/20/2017 _x86_64_ (4 CPU)

01:18:49 AM CPU %user %nice %system %iowait %steal %idle
01:18:50 AM all 0.00 0.00 0.25 0.00 0.00 99.75
01:18:50 AM 0 0.00 0.00 0.00 0.00 0.00 100.00
01:18:50 AM 1 0.00 0.00 0.00 0.00 0.00 100.00
01:18:50 AM 2 0.00 0.00 0.00 0.00 0.00 100.00
01:18:50 AM 3 0.00 0.00 0.00 0.00 0.00 100.00

01:18:50 AM CPU %user %nice %system %iowait %steal %idle
01:18:51 AM all 0.00 0.00 0.00 0.00 0.00 100.00
01:18:51 AM 0 0.00 0.00 0.00 0.00 0.00 100.00
01:18:51 AM 1 0.00 0.00 0.99 0.00 0.00 99.01
01:18:51 AM 2 0.00 0.00 0.00 0.00 0.00 100.00
01:18:51 AM 3 0.00 0.00 0.00 0.00 0.00 100.00

Average: CPU %user %nice %system %iowait %steal %idle
Average: all 0.00 0.00 0.12 0.00 0.00 99.88
Average: 0 0.00 0.00 0.00 0.00 0.00 100.00
Average: 1 0.00 0.00 0.50 0.00 0.00 99.50
Average: 2 0.00 0.00 0.00 0.00 0.00 100.00
Average: 3 0.00 0.00 0.00 0.00 0.00 100.00
各列的意義就不再贅述了,在前面幾個信息查看命令已經解釋過多次了。

在上面的例子中,統計了所有cpu(0,1,2,3共4顆)每秒的狀態信息,每秒還進行了一次彙總,即all,最後還對每顆cpu和彙總all計算了平均值。而我們真正需要關註的是最後的average部分的idle值,idle越小,說明cpu處於空閑時間越少,該顆或整體cpu使用率就越高。

或者直接對整體進行統計。如下:

[root@server2 ~]# sar -u 1 2
Linux 3.10.0-327.el7.x86_64 (server2.longshuai.com) 06/20/2017 _x86_64_ (4 CPU)

01:18:37 AM CPU %user %nice %system %iowait %steal %idle
01:18:39 AM all 0.00 0.00 0.00 0.00 0.00 100.00
01:18:40 AM all 0.00 0.00 0.23 0.00 0.00 99.77
Average: all 0.00 0.00 0.12 0.00 0.00 99.88

10.5.2 統計記憶體使用情況


其中kbdirty表示記憶體中臟頁的大小,即記憶體中還有多少應該刷新到磁碟的數據。


10.5.3 統計網路流量
第一種方法是查看/proc/net/dev文件。

 

關註列:receive和transmit分別表示收包和發包,關註每個網卡的bytes即可獲得網卡的情況。寫一個腳本計算每秒的差值即為網路流量。

或者使用sar -n命令統計網卡介面的數據。

[root@server2 ~]# sar -n DEV 1 2
Linux 3.10.0-327.el7.x86_64 (server2.longshuai.com) 06/20/2017 _x86_64_ (4 CPU)

01:51:11 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
01:51:12 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
01:51:12 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

01:51:12 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
01:51:13 AM eth0 0.99 0.99 0.06 0.41 0.00 0.00 0.00
01:51:13 AM lo 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 0.50 0.50 0.03 0.21 0.00 0.00 0.00
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
各列的意義如下:

rxpck/s:每秒收到的包數量
txpck/s:每秒發送的包數量
rxkB/s:每秒收到的數據,單位為kb
txkB/s:每秒發送的數據,單位為kb
rxcmp/s:每秒收到的壓縮後的包數量
txcmp/s:每秒發送的壓縮後的包數量
rxmcst/s:每秒收到的多播包數量

查看隊列情況
[root@server2 ~]# sar -q
Linux 3.10.0-327.el7.x86_64 (server2.longshuai.com) 06/20/2017 _x86_64_ (4 CPU)

12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
12:10:01 AM 0 446 0.01 0.02 0.05 0
12:20:01 AM 0 445 0.02 0.03 0.05 0
12:30:01 AM 0 446 0.00 0.01 0.05 0
Average: 0 446 0.01 0.02 0.05 0
每列意義解釋:

runq-sz:等待隊列的長度,不包括正在運行的進程
plist-sz:任務列表中的進程數量,即總任務數
ldavg-N:過去1分鐘、5分鐘、15分鐘內系統的平均哎
blocked:當前因為IO等待被阻塞的任務數量

統計磁碟IO情況
[root@server2 ~]# sar -d -p 1 2
Linux 3.10.0-327.el7.x86_64 (server2.longshuai.com) 06/20/2017 _x86_64_ (4 CPU)

12:53:06 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
12:53:07 AM sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

12:53:07 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
12:53:08 AM 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: sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
分別統計的是12:53:06到12:53:07和12:53:07到12:53:08這兩秒的IO使用情況。

各列的意義如下:

tps:transfer per second,每秒的transfer速率,一次物理IO請求算一次transfer,但多次邏輯IO請求可能組合起來才算一次transfer。
rd_sec/s:每秒讀取的扇區數,扇區大小為512位元組。
wr_sec/s:每秒寫入的扇區數。
avgrq-sz:請求寫入設備的平均大小,單位為扇區。(The average size (in sectors) of the requests that were issued to the device)
avgqu-sz:請求寫入設備的平均隊列長度。(The average queue length of the requests that were issued to the device.)
await:寫入設備的IO請求的平均(消耗)時間,單位微秒(The average time for I/O requests issued to the device to be served.)
svctm:不可信的列,該列未來將被移除,所以不用管
%util:最重要的一列,顯示的是設備的帶寬情況。該列若接近100%,說明磁碟速率飽和了。

10.6 free命令
free用於查看記憶體使用情況。CentOS 6和CentOS 7上顯示格式不太一樣。

free [options]
選項說明:
-h:人類可讀方式顯式單位
-m:以MB為顯示單位
-w:將buffers和cache分開單獨顯示。只對CentOS 7上有效
-s:動態查看記憶體信息時的刷新時間間隔
-c:一共要刷新多少次退出free
以下以CentOS 7上的free結果說明各列的意義。

[root@server2 ~]# free -m
total used free shared buff/cache available
Mem: 1824 131 1286 8 407 1511
Swap: 1999 0 1999
Mem和Swap分別表示物理記憶體和交換分區的使用情況。

total:總記憶體空間
used:已使用的記憶體空間。該值是total-free-buffers-cache的結果
free:未使用的記憶體空間
shared:/tmpfs總用的記憶體空間。對內核版本有要求,若版本不夠,則顯示為0。
buff/cache:buffers和cache的總占用空間
available:可用的記憶體空間。即程式啟動時,將認為可用空間有這麼多。可用的記憶體空間為free+buffers+cache。
所以available才是真正需要關註的可使用記憶體空間量。

使用-w可以將buffers/cache分開顯示。

[root@server2 ~]# free -w -m
total used free shared buffers cache available
Mem: 1824 131 1286 8 0 406 1511
Swap: 1999 0 1999
還可以動態統計記憶體信息,例如每秒統計一次,統計2次。

[root@server2 ~]# free -w -m -s 1 -c 2
total used free shared buffers cache available
Mem: 1824 130 1287 8 0 406 1512
Swap: 1999 0 1999

total used free shared buffers cache available
Mem: 1824 130 1287 8 0 406 1512
Swap: 1999 0 1999
以下是CentOS 6上的free結果。

[root@xuexi ~]# free -m
total used free shared buffers cached
Mem: 980 415 565 0 53 239
-/+ buffers/cache: 121 859
Swap: 1999 0 1999
在此結果中,"-/+ buffers/cache"的free列才是真正可用的記憶體空間了,即CentOS 7上的available列。

一般來說,記憶體可用量的範圍低於20%應該要引起註意了。

 

摘抄自longshuai:http://www.cnblogs.com/f-ck-need-u/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1:基礎容器編譯部署apache 1.1:pull一個ubuntu 16.04的鏡像 sudo docker pull ubuntu:16.04 1.2:運行容器 sudo docker run -d --name ubuntu -p 80:80 ubuntu:16.04 1.3:安裝ubuntu依 ...
  • 問:如何實現單片乙太網微控制器? 答:訣竅是將微控制器、乙太網媒體接入控制器(MAC)和物理介面收發器(PHY)整合進同一晶元,這樣能去掉許多外接元器件.這種方案可使MAC和PHY實現很好的匹配,同時還可減小引腳數、縮小晶元面積.單片乙太網微控制器還降低了功耗,特別是在採用掉電模式的情況下. 問:以 ...
  • awk:把文件逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理,是一個強大的文本分析工具,在對數據分析並生成報告時很有優勢。 awk有3個不同版本: awk、nawk和gawk,未作特別說明,一般指gawk,gawk 是 AWK 的 GNU 版本。 命令格式: 變數 常見內置變 ...
  • 一 進程空間分佈概述 對於一個進程,其空間分佈如下圖所示: 程式段(Text):程式代碼在記憶體中的映射,存放函數體的二進位代碼。 初始化過的數據(Data):在程式運行初已經對變數進行初始化的數據。 未初始化過的數據(BSS):在程式運行初未對變數進行初始化的數據。 棧 (Stack):存儲局部、臨 ...
  • 一、實驗拓撲圖: 二、實驗目標:部署標準交換機和分散式交換機 三、實驗步驟: 標準交換機的配置 1、分別在兩台esxi主機中添加6塊物理網卡,橋接到vmnet1。 通過宿主機連接到sql-vcenter 2、分別在兩台esxi主機配置標準交換機,將vSwitch0交換機添加一個物理網卡,實現負載均衡 ...
  • Mac編譯安裝swfToolsMac編譯安裝swfTools下載源碼解壓源碼安裝依賴項./configure執行配置或者執行如下配置命令:需要註意這裡存在部分代碼錯誤,需要修改解決後執行一、char * 和 int比較導致的錯誤, 需要修為文件二、存在一些變數沒有定義的錯誤三、存在一些方法參數數量錯... ...
  • 前面給大家介紹了很多在Linux安裝軟體的知識,這些軟體往往依賴了很多第三方的工具或者軟體,如果在Linux伺服器有外網的情況,咱們可以通過yum install這樣的命令直接去安裝這些相關的工具或者軟體,比如: 但是我們在平時的項目開發和運維當中,伺服器為了安全是不一定會開放外網的,對於部署在內網 ...
  • 我們知道用linux命令rz/sz可以通過一些終端軟體如secureCRT等在linux伺服器與本地windows之間傳文件。在伺服器上rz一下,在本地windows下就跳出一個視窗,選擇文件後就傳到了伺服器上;而在伺服器上用sz命令sz一個文件,在本地電腦硬碟上就有了這個文件。用起來是很方便,但是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...